Spring MVC拦截器vs Sitemesh

时间:2012-03-01 17:42:43

标签: spring-mvc sitemesh thymeleaf

在使用Sitemesh来装饰我的视图的Spring MVC应用程序中,我想向每个Model注入WebSecurityExpressionRoot类型的名为 sec 的安全属性。

这样我可以在所有视图中调用hasAnyRole(),hasAuthority()...这样管理员就可以通过底层模板引擎(Thymeleaf BTW)来呈现额外的东西。

带有被覆盖的postHandle(...)的自定义HandlerInterceptorAdapter似乎是Spring MVC实现此目的的方式,但似乎我的主Sitemesh装饰器有点窃取我的安全属性,因为每当我尝试某些视图中的引用为null。

但是只有我的一个控制器受影响后才会显示的视图 与mvc:view-controller映射确实具有 sec 属性。

我正在考虑写一个Filter来隐藏到当前的HttpServletRequest来解决这个问题,但我可能会遗漏一些东西。

提前致谢!

1 个答案:

答案 0 :(得分:0)

你确定mvc:view-controller观点/路径正在击中拦截器吗?

另外,我不知道Thymeleaf,但是使用JSP(例如,JstlView)使Spring MVC将Model复制到Request属性(为了呈现视图) - 事实上Sitemesh也得到了我认为,通过请求属性的值是一个结果。