【发布时间】:2011-11-13 17:13:26
【问题描述】:
我的 Spring 3 应用程序中的每个视图都有一组可以依赖的属性。所以每个控制器的第一行是这样的:
ControllerHelper.addDefaultModel(model, personManager, request);
我会在里面添加
- 如果有人登录,则从数据库中检索用户对象和全名
- 通常设置一次的变量集(例如
imagesHost) - 访问者可以切换到的语言集
- 当前语言
- 一些统计数据(例如我们系统中的总人数)
这一切都允许每个视图显示登录用户的姓名、轻松引用图像位置、语言列表和网站的一些整体统计信息。
所以问题是,控制器模型对象是存储所有数据的最佳位置,还是有更方便的位置让视图访问这些信息同样容易?
其次,我真的很希望不必将上面的ControllerHelper 行作为每个控制器的第一行。实际上并不总是第一行,有时我首先检查是否需要在该控制器中重定向,因为我不想无缘无故地浪费资源填充模型。也许过滤器或注释或一些 Spring 回调机制可以确保在控制器完成之后调用 ControllerHelper 代码,但在视图渲染之前 之前,如果返回了重定向?
【问题讨论】:
-
你不能把这些东西放在会话中吗?
-
所以用户对象和全名也许我可以放入会话中,其余的东西放入会话中没有任何意义。我将会话保存在数据库中以便于集群,因此我尽量将其保持在最低限度。如果我将用户对象和全名存储在会话中,这意味着我将为每个请求进行数据库调用。无论如何,我正在通过在每次请求时从数据库中检索这些对象来执行此操作,但至少检索对象可以更轻松地进行休眠缓存。
-
我有同样的问题要解决。 @在。你是怎么解决的?
标签: java spring spring-mvc spring-3