spring - 为什么我需要一个 View 类来解析 Spring MVC 中的 JSTL View ?

标签 spring jsp spring-mvc jstl

我正在穿过克雷格墙Manning Spring4 in Action .

在创建 JSP View 时,他建议,

The InternalResourceViewResolver ultimately resolves logical view names into instances of InternalResourceView that reference JSP files. But if those JSP files are referencing JSTL tags for formatiing or messages, then you may want to configure InternalResourceViewResolver to resolve a JSTLView instead.

要使用InternalResourceView Resolver解析器JSTLView而不是InternalResourceView,只需设置其viewClass属性。

像这样,

 @Bean
    public ViewResolver viewResolver() {

        InternalResourceViewResolver resolver =
            new InternalResourceViewResolver();
        resolver.setPrefix("/WEB-INF/views/");
        resolver.setSuffix(".jsp");
        resolver.setViewClass(org.springframework.web.servlet.view.JstlView.class);

        return resolver;
    }

为什么我需要添加这一行

resolver.setViewClass(org.springframework.web.servlet.view.JSTLView.class);

这个类到底是用来做什么的?

有什么建议吗?`

最佳答案

在旧的 Spring 版本中,没有自动检测功能。这已经在不同的类(class)中慢慢引入。 InternalResourceViewResolver 早期没有自动检测 JSTL,这需要始终将 JSTLView 指定为 viewClass

但是this revision在曾经包含 Spring 的非常古老的 SVN 中添加了它,从那时起,就会自动检测要使用哪个 viewClass

提交消息


r14417 | jhoeller | 2007-08-05 00:01:19 +0200 (zo, 05 aug 2007) | 2 lines

InternalResourceViewResolver uses JstlView as default (instead of InternalResourceView) if the JSTL API is present


它仍然在书中的原因我无法告诉,我怀疑由于重复使用了以前版本中的 Material ,所以它被留在了书中,但这只是一个猜测。仅the author可以回答这个问题。

关于spring - 为什么我需要一个 View 类来解析 Spring MVC 中的 JSTL View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32459400/

相关文章:

java - 如何从@GetMapping spring 注释中排除一些路径?

javascript - $(window).load() 被无限次调用

java - Spring Security 配置无法找到 NameSpaceHandler

java - Maven 在运行 Spring Boot 应用程序时无法启动嵌入式 Tomcat 容器

java - 如何将数据从 servlet 传递到 jsp,以便适当的用户可以访问它?

jsp - 使用 Jersey 访问 REST 资源和静态资源

java - 我应该将我的业务不变检查放入 Controller 中吗

oracle - Spring 事务不会在异常时回滚(Oracle JNDI 数据源)

java - 对于具有纯 Java 配置的 Spring Web 应用程序,拥有 2 个不同的上下文有意义吗?

java - 有没有办法从 XML 文件中获取字符串格式的查询?