【发布时间】:2014-10-28 06:36:02
【问题描述】:
在单例范围内获得了一个自定义格式化程序 bean。并想在 JSP 页面中使用它。
第一种方式:
- @Autowired(或@Inject)控制器中的 bean
- 将 bean 放入 JSP 上下文中
==代码==
@RequestMapping(method = RequestMethod.GET)
public ModelAndView get() {
ModelAndView result = new ModelAndView( "view" );
result.addObject( "format", format );
return result;
}
最简单的方法,但是当几乎每个页面都需要这个bean时,它会很痛苦。
第二种方式:
- 将 bean 移动到会话范围
- @Autowired(或@Inject)控制器中的 bean
- 现在 bean 存储在 session 中,我们可以在 sessionScope 中找到它
==代码==
<div>
${sessionScope.format.doSmth()}
</div>
也很糟糕。首先,需要注入 bean - 只有当它被 Spring Context 注入时才会创建 bean。否则,将不会创建 bean 并将其放入会话中。 其次,我的 IDE (IDEA) 在这种情况下不提供语法高亮。
所以问题是:
有没有什么方法可以在 JSP 页面中使用单例范围的 bean,而无需每次都将其置于上下文中并获得 IDE 支持?
【问题讨论】:
-
可能在视图解析器stackoverflow.com/questions/3046929/…中使用“exposedContextBeanNames”
-
我会说你不应该在你的 JSP 中访问 bean。 JSP 应该是关于显示,而不是关于执行方法的视图。在发送到页面之前准备完整的模型,页面应该只渲染,不多也不少。
标签: java spring jsp spring-mvc