java - Spring-MVC 与 JSP。如何从 JSP 页面访问单例范围的对象?

标签 java spring jsp spring-mvc

在单例范围内获得了自定义格式化程序 bean。并想在JSP页面中使用它。

第一种方法:

  • @Autowired(或@Inject) Controller 中的 bean
  • 将 bean 放入 JSP 上下文中

==代码==

    @RequestMapping(method = RequestMethod.GET)
    public ModelAndView get() {
        ModelAndView result = new ModelAndView( "view" );
        result.addObject( "format", format );
        return result;
    }

最简单的方法,但是当几乎每个页面都需要这个 bean 时,就会很痛苦。

第二种方式:

  • 将 bean 移至 session 范围
  • @Autowired(或@Inject) Controller 中的 bean
  • 现在bean已存储在 session 中,我们可以在sessionScope中找到它

==代码==

<div>
${sessionScope.format.doSmth()}
</div>

也很糟糕。首先,需要注入(inject)bean——只有当Spring Context注入(inject)bean时才会创建bean。否则,bean 将不会被创建并放入 session 中。 其次,在这种情况下,我的 IDE (IDEA) 不提供语法突出显示。

所以问题是:

是否有任何方法可以在 JSP 页面中使用单例范围的 bean,而无需每次都将其放入上下文中并且需要 IDE 支持?

最佳答案

我会考虑两种方法来使(单例范围)bean 在 JSP View 中可分配。

  • 将其存储为 ServletContext 属性。任何 Bean(包括格式化程序 Bean 本身的 @Configuration Bean)都可以在 init-method 中实现。然后所有 JSP 都可以通过 EL 立即访问它
  • 使用拦截器将其放入模型中的所有或部分 Controller 之后。它仅适用于这些 View ,但如果您稍后决定使用 Velocity 或 Thymeleaf 等其他 View ,它仍然有效

但我真的不知道如何获得 IDE 支持:-((不要使用 IDEA)

关于java - Spring-MVC 与 JSP。如何从 JSP 页面访问单例范围的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26602219/

相关文章:

java - 在 Java 中的 XML 中保留 ISO-8859-1 到 UTF-8 转换之间的 unicode 代码点

java - 自定义 ArrayAdapter 未被调用

java - jmeter GUI设置 https.use.cached.ssl.context=false

java - 使用java + spring实现时间段(Window)

Spring Boot Rest - 如何接受多个 header

java - 如何更改displaytag.properties的路径?

javascript - 如何使文档准备好执行多次

css - 幻灯片图片高度调整

java - 字段没有私有(private) setter - 单元测试遗留代码

没有 spring boot-starter-webflux 的 Spring WebClient