为什么我需要一个视图类来解析Spring MVC中的JSTL视图?

Shi*_*han 4 spring jsp jstl spring-mvc

我正在通过Craig Walls Manning Spring4 in Action.

他建议,在创建JSP视图中,

InternalResourceViewResolver最终将逻辑视图名称解析为引用JSP文件的InternalResourceView实例.但是,如果这些JSP文件引用用于格式化或消息的JSTL标记,那么您可能希望配置InternalResourceViewResolver来解析JSTLView.

使用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;
    }
Run Code Online (Sandbox Code Playgroud)

为什么我需要添加此行

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

这个课程究竟意味着什么?

有什么建议吗?`

M. *_*num 6

在较旧的Spring版本中,没有自动检测功能.这已在不同的课程中慢慢介绍.在InternalResourceViewResolver没有在早期JSTL的自动检测,这需要一个始终指定JstlViewviewClass.

然而,曾经包含Spring的非常旧的SVN中的这个版本添加了它,从那时起就可以自动检测viewClass使用哪个版本.

提交消息


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

如果存在JSTL API,InternalResourceViewResolver将JstlView用作默认值(而不是InternalResourceView)


它仍然在书中我无法分辨的原因,我怀疑由于重复使用以前版本中的材料而已经留下了,但这是猜测.只有作者可以回答这个问题.