假设已登录的用户点击了网址:
www.example.com/forum/234
在spring mvc action触发之前,我想加载用户对象,用户的权限,论坛对象。
现在,我希望在此请求中共享这些对象。因此,其他类可以在当前请求中查看User
,Permission
和Forum
对象。
如果自定义freemarker模块可以引用这些对象,那么它们可能会很酷。
这可能吗?
答案 0 :(得分:1)
首先,考虑使用spring-security,其过滤器可以完成您所需的一切。
如果您想手动完成所有操作,那么您至少有两个选择: - 使用servlet过滤器 - 使用spring handler interceptor(http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-handlermapping-interceptor)。
在这两种情况下都将此数据存储在请求属性中。
另一个选择是创建带有请求范围的bean,它将存储您的数据。
对于Freemarker,您必须提供 FreemarkerViewResolver 的子类,它将在 requiredViewClass()方法中返回 FreeMarkerView 的子类。在 FreeMarkerView 子类中的 exposeHelpers()方法中添加对象。