Spring MVC перехватчик против Sitemesh - PullRequest
1 голос
/ 01 марта 2012

В приложении Spring MVC, использующем Sitemesh для украшения моих представлений, я хочу внедрить в каждый Model атрибут безопасности с именем sec типа WebSecurityExpressionRoot.

Таким образом, я мог бы вызывать hasAnyRole (), hasAuthority () ... во всех моих представлениях, чтобы администраторы представляли дополнительный материал базовым механизмом шаблонов ( Thymeleaf BTW).

Пользовательский HandlerInterceptorAdapter с переопределенным postHandle (...) кажется способом Spring MVC для достижения этой цели, но кажется, что мой главный декоратор Sitemesh в некотором роде крадет мой атрибут безопасности, потому что всякий раз, когда я пытаюсь ссылатьсяв некоторых видах это значение равно null.

НО только виды, отображаемые после того, как затронут один из моих контроллеров, те, которые сопоставлены с mvc:view-controller, имеют атрибут sec .

Я собираюсь написать Filter, чтобы спрятать сек в текущий HttpServletRequest, чтобы решить эту проблему, но я, возможно, что-то упустил.

Заранее спасибо!

1 Ответ

0 голосов
/ 16 июня 2012

Вы уверены, что mvc:view-controller виды / пути попадают на перехватчик?

Кроме того, я не знаю о Thymeleaf, но использование JSP (например, JstlView) делает Spring MVC копировать Model в атрибуты Request (для целей визуализации представления) - факт, что Sitemesh также получает значения через Атрибуты запроса, я думаю, являются следствием.

...