Общие атрибуты модели Spring-MVC, используемые в тегах или фрагментах страницы - PullRequest
1 голос
/ 01 июля 2010

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

...
<body>
<mytaglib:header/>
...
<jsp:include page="footer.jsp"/>
...
</body>

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

Есть ли способ инкапсулировать логику, которая добавляет в модель на основе вложенных страниц или тегов?

Ответы [ 2 ]

2 голосов
/ 02 июля 2010

Ну, вы можете сделать это несколькими способами.Имеется в виду следующее:

  1. Поместите свою логику в Фильтр , который помещает информацию в область запроса;

  2. Spring имеет нечто похожее на Фильтр, называемый Interceptor .Вы можете разместить свою логику здесь и снова сохранить ее в области запроса.

  3. Содержите логику за пользовательским тегом, который вставляется на ваши страницы.В этом есть недостаток, потому что вы должны вставить тег в каждую JSP.Если вы используете фильтр декоратора, такой как SiteMesh , вы можете поместить его один раз в JSP декоратора и покончить с этим.

  4. Имейте логику в родительском контроллеречто все ваши контроллеры будут расширяться.

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

Вы используете фреймворк в частности? Если вы используете только сервлеты, я бы предложил вам создать базовый класс сервлетов, а если вы используете Spring, я предложу вам создать базовый контроллер SPring MVC. И вы можете установить эти атрибуты из базового класса или использовать фильтры:)

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