我正在尝试在应用程序中使用 Thymeleaf 的 ServletContextTemplateResolver
以及 InternalViewResolver
来解析 html
和 我的 Controller 中返回了 jsp
View 。我已将模板解析器的顺序设置为 0,因为具有最高顺序的解析器是链中的最后一个解析器:
/** Thymeleaf HTML Template View Resolver **/
@Bean
public ServletContextTemplateResolver getServletContextTemplateResolver() {
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver();
templateResolver.setPrefix("/WEB-INF/html/");
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode("HTML5");
templateResolver.setOrder(0);
return templateResolver;
}
/** JSP View Resolver **/
@Bean
public InternalResourceViewResolver getInternalResourceViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/jsp/");
resolver.setSuffix(".jsp");
resolver.setOrder(1);
return resolver;
}
但是我的 View 总是解析为 html。是否可以包含额外的逻辑(或者可能解析器配置不正确?)或传递给我的 ModelAndView 对象,以确保我的 jsp View 映射到内部 View 解析器,并且 html vies 映射到我的模板解析器?即像 ModelAndView mav = new ModelAndView("mypage.html");
//当然解析为 mypage.html.jsp 。
最佳答案
对于 ServletContextTemplateResolver(即 TemplateResolver 的实现),您可以为其应忽略的文件指定“模式”。
试试这个方法:see here for any other applicable method
public void setResolvablePatterns(Set<String> resolvablePatterns)
更新
看起来与 Spring App 一起使用的 ThymeLeaf Resolver 完全不同:org.thymeleaf.spring4.view.ThymeleafViewResolver
查看此处定义的 bean: http://www.thymeleaf.org/doc/tutorials/2.1/thymeleafspring.html#views-and-view-resolvers-in-spring-mvc
<bean class="org.thymeleaf.spring4.view.ThymeleafViewResolver">
<property name="templateEngine" ref="templateEngine" />
<property name="order" value="1" />
<property name="viewNames" value="*.html,*.xhtml" />
</bean>
关于java - 同时包含 HTML 和 JSP ViewResolvers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31004325/