Как я могу изменить свой контроллер, чтобы он был достаточно отделен от моего взгляда? - PullRequest
2 голосов
/ 24 марта 2019

Я программирую веб-приложение, используя Spring MVC, где мне нужно создать некоторые элементы, которые я не могу создать напрямую через jsp.В частности, все те, которые перечисляют значения, которые я получаю из моей базы данных, так как я не могу создать структуру в jsp до того, как узнаю ее размер.Вот как я это делаю прямо сейчас:

@RequestMapping(method = RequestMethod.GET)
public ModelAndView getAllEjercicios (...)

...

Table table = new Table("table_ejercicios", "table_ejercicios", new ArrayList<TableHead>(Arrays.asList(tH1, tH2, tH3)), getEjercicioTableContent(ejercicioList));

...

model.put("table", table.getCode());

return new ModelAndView("ejercicio/ejercicio-list", MODEL_NAME, model);

Это мой метод контроллера, где Table - это пользовательский класс, который я создал, который будет возвращать HTML-код таблицы при вызове getCode (), используяпараметры это было дано.Проблема в том, что я начинаю видеть, что мой контроллер недостаточно отделен, так как он передает представление HTML-код всего объекта, а не только параметры, которые мне нужны, чтобы встроить его в мой jsp-файл.Кстати, это не просто проблема с этой конкретной таблицей, у меня есть другие выпадающие списки и тому подобное в моем коде.

Проблема в том, что если я использую функцию javascript, которая получает те же параметры, что и моя таблицавнутри jsp мне придется реплицировать много кода в других представлениях, использующих аналогичные таблицы, поскольку мне придется копировать всю функцию javascript в каждый файл jsp.

Мой код работает отлично, этоне проблема в том, что он не работает, это проблема структуры.

Что мне делать, если я оставлю свой код таким, какой он есть, или есть решение, о котором я не думаю?

Спасибо

1 Ответ

1 голос
/ 25 марта 2019

HTML-страницы, содержат много элементов, таких как таблицы, формы, выпадающий список, ....Если вы сгенерируете все элементы пользовательского интерфейса в серверной части, ваш код на стороне сервера будет полон кодирования на стороне клиента!Как вы уже знаете, это не очень хорошая практика.

Я думаю, что лучшая практика - это рендеринг HTML-страниц без каких-либо дополнительных элементов пользовательского интерфейса, только HTML-код с данными.Вы даже можете исключить данные со страницы и заполнить элементы html данными из запроса ajax.Тем не менее, ваш контроллер будет полностью свободен от кодов пользовательского интерфейса.При таком подходе ваша задача - дублирование кодов на стороне клиента .Это можно решить с помощью создания утилит javascript .Например, у вас есть одна структура таблицы HTML на нескольких страницах.Для этого вы можете написать функцию javascript для создания таблицы.Эта функция может принимать некоторые параметры и добавлять динамическую таблицу на каждую нужную страницу.Вы можете выполнять аналогичные работы для других элементов, таких как формы и раскрывающийся список.

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