可以在操作之前加载对象,并在操作和freemaker模块中共享这些对象吗?

时间:2010-07-16 16:42:54

标签: java spring spring-mvc freemarker

假设已登录的用户点击了网址:

www.example.com/forum/234

在spring mvc action触发之前,我想加载用户对象,用户的权限,论坛对象。

现在,我希望在此请求中共享这些对象。因此,其他类可以在当前请求中查看UserPermissionForum对象。

如果自定义freemarker模块可以引用这些对象,那么它们可能会很酷。

这可能吗?

1 个答案:

答案 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()方法中添加对象。