我正在尝试实现,以便Thymeleaf可以与Spring MVC 3一起使用并使用2个视图解析器,一个用于jsp,一个用于html模板 . 我想首先要求我的Thymeleaf ServletContextTemplateResolver尝试解析视图,如果找不到,请转到Spring MVC 3 InternalResourceViewResolver .
我通过这种方式将ServletContextTemplateResolver的顺序值设置为1:
<bean id="templateResolver"
class="org.thymeleaf.templateresolver.ServletContextTemplateResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".html" />
<property name="templateMode" value="HTML5" />
<property name="order" value="1" />
<property name="cacheable" value="false" />
</bean>
和InternalResourceViewResolver的顺序“以相同的方式为2:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/" />
<property name="suffix" value=".jsp" />
<property name="order" value="2" />
</bean>
据我所知,从文档中可以看到最高顺序 .
在“views”文件夹中,我有一个“index.jsp”和一个“index.html”,我的一般想法是首先要求ServletContextTemplateResolver尝试解析,如果有的话,它将解析为“index.html”,并且只有当ServletContextTemplateResolver找不到合适的视图时,才会要求InternalResourceViewResolver解析视图 .
但我得到的结果是,当InternalResourceViewResolver处于活动状态时,它会解析所有视图,无论如何 . 如果我发表评论,那么ServletContextTemplateResolver就可以解决了 .
这些解析器不可能以这种方式配对吗?有什么选择?
1 回答
Thymeleaf在尝试查找其视图解析程序之外的页面时抛出错误,而不是将其传递到下一个视图解析程序 . 通过设置excludeViewNames,跳过尝试解析Thymeleaf中的视图名称 . 请参阅下面的示例代码 .