Spring MVC - нормально ли преобразование JSON тега JSON? - PullRequest
3 голосов
/ 08 июля 2011

Метод контроллера псевдо

@RequestMapping("/foo")
public String getFoo(Model model) {
   model.add("foo", repo.findFoo());
   model.add("bar", repo.findBar());
   model.add("barOptions", repo.findBarOptions(bar));
   return "fooView";
}

Допустим, клиент использует язык выражений для визуализации foo и bar; но мы используем JavaScript для рендеринга barOptions.

<html>
    <script>
    var options = <mytag:toJSON object="${barOptions}"/>;
    $("#options").renderOptions( options );
    </script>
    <body>
        <mytag:renderFoo foo="${foo}"/>
        <mytag:renderBar foo="${bar}"/>
        <ul id="options"></ul>
    </body>
</html>

Общие соглашения говорят мне, что это плохо. Но суть MVC, когда контроллер отправляет данные, а представление определяет, как их использовать, говорит мне, что это хорошо. Есть ли лучший способ сделать то же самое? Есть ли причина, почему это обычно не делается? Я мог бы запросить JSON с помощью отдельного вызова, но затем мне нужно было бы сделать больше запросов для загрузки страницы, и может быть логика для определения barOptions в методе контроллера getFoo() на основе других входных данных во время загрузка страницы.

Ответы [ 2 ]

2 голосов
/ 13 декабря 2011

На первый взгляд я не могу сказать, что вижу что-то явно не так с подходом. Единственный аспект, который первоначально застал меня врасплох, была необходимость конвертировать данные в объекте модели в json.

Для меня JSON обычно подразумевает, что существует какой-то объект на стороне сервера, который необходимо преобразовать, чтобы javascript на стороне клиента мог обращаться к его структуре или манипулировать ею с помощью JavaScript. Я думаю, не зная больше цели списка опций, я не вижу причины, по которой здесь требуется сериализация json.

Используя тег для преобразования объекта модели в JSON, мы избегаем дополнительный запрос клиента

Но если мы предположим, что JSON является требованием (возможно, для какого-либо стороннего плагина jquery), то я абсолютно не вижу ничего плохого в подходе.

Что особенного или отличительного в неупорядоченном списке barOptions, почему он отображается с помощью json? Почему бы просто не использовать цикл for для создания элементов списка? Или вы можете иметь собственный тег, который полностью создает ul.

Кроме того, я упустил момент, как можно воспринимать это как плохой код.

0 голосов
/ 20 июля 2011

Обычно JSON запрашивается JavaScript с помощью вызова Ajax, но если в вашем случае он доступен во время рендеринга страницы, я не вижу ничего плохого в вашем решении. Это чистый, компактный код и легко читаемый. Для меня это выглядит вполне нормально, альтернативой было бы зацикливание массива параметров с помощью forEach, но этот подход выглядит лучше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...