我正在通过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;
    }


为什么我需要添加此行

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

这堂课到底是什么意思?

有什么建议吗?

最佳答案

在较早的Spring版本中,没有自动检测功能。在不同的类别中已对此进行了缓慢介绍。 InternalResourceViewResolver在早期没有自动检测JSTL,这要求始终将JstlView指定为viewClass

但是,在曾经包含Spring的非常老的SVN中,this revision已添加了它,此后便自动检测要使用的viewClass

提交讯息




r14417 | jhoeller | 2007-08-05 00:01:19 +0200(zo,2007年8月5日)| 2行

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




我仍然无法说这本书的原因,我怀疑是由于重用了以前发行版中的内容,但这是一个猜测。只有the author可以回答该问题。

07-24 17:16