Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Вопрос по Spring Web MVC


Автор: maz543 22.1.2010, 20:15
Изучаю спринг, пример petclinic.
Хочу свой проект сделать по аналогии, простенький сайт.

Такой вопрос.
У меня есть меню, которое строится на основе данных из базы. Каким образом, анатацией, можно создать это меню, положить во view?
Чтобы этого не делать в каждом контроллере или чтобы меню доставалось из базы, а потом выполнялись действия конкретного контроллера.

Автор: gelo86 22.1.2010, 20:29
Если используеш Tiles то там есть такая штука ViewPreparer.

Автор: maz543 22.1.2010, 20:39
Я использую jstl

Автор: gelo86 22.1.2010, 21:20
Ну тогда в голову приходит, что вам придетя описывать свои ViewResolver и View. Тогда вы всегда перед тем как рендерить йсп, сможете в модел записать даные ис БД о меню.

Автор: maz543 23.1.2010, 10:49
Мне кажется это странным, что на типичную функциональность нет стандартного решения.
Будем искать дальше.

Автор: afon 23.1.2010, 13:03
Цитата
Каким образом, анатацией, можно создать это меню, положить во view?
 Быстрой аннтотацией никак. НО.

У меня есть базовый контроллер всех типовых форм - BaseFormController, от которого потом наследуются все остальные, и даже еще несколько базовых, совсем простых.
Так вот, в спринговых контроллерах есть методы showForm и handleRequestInternal, через первый метод все контроллеры проходят всегда, когда показывают форму, через второй - всегда, когда получают какой-нибудь реквест, кроме onSubmit. 

Из этих двух методов можешь вызывать какой-нибудь свой метод (у меня - fillModelMap(HttpServletRequest, Map)) {return Map}- который сам будет набрасывать в этот Map все нужные объекты. А этот Map потом кладется во view уже внутри методов showForm и handleRequestInternal. У меня в каждый view вбрасывается авторизированный пользователь и объект меню. То есть - всегда, при всех типах запросах на любой контроллер, возвращающий произвольный view. 

Так решил это я, возможно, в спрингах есть более адекватные методы, но я не нашел. 

Автор: maz543 23.1.2010, 14:13
Цитата(afon @  23.1.2010,  13:03 Найти цитируемый пост)
Так решил это я, возможно, в спрингах есть более адекватные методы, но я не нашел.

Спасибо за вариант. Мне походу придется делать что-то подобное.
Меня удивляет и возмущает то, что этого нет (или я смотрю в книгу, а вижу фигу) в базовых возможностях.
С первого взгляда все кажется здоровским и очень элегантным. А как необходимо отойти от стандарта, то никаких возможностей, кроме как архитектурных изощрений.

Автор: afon 23.1.2010, 19:05
>>Меня удивляет и возмущает то, что этого нет 
Просто spring используется черт те где smile И не обязательно каждому пользователю mvc нужен резолвер меню

>>или я смотрю в книгу, а вижу фигу
А вы только знакомитесь со спрингами или как бы уже давно и хорошо знакомы? 
По собственному опыту - чем дальше с ними работаешь, тем больше они "впириают". Это мега штука, серьезно. 
Взять те же контроллеры - вот вам метод handleRequest - универсальный. Дальше на его основе можно выдумывать все что угодно. 
Но это я так...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)