我有一个带有Thymeleaf视图解析器的Spring MVC应用程序 . 这是我的配置类:
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public SpringResourceTemplateResolver springResourceTemplateResolver() {
return new SpringResourceTemplateResolver();
}
@Bean
public ViewResolver viewResolver() {
ThymeleafViewResolver resolver = new ThymeleafViewResolver();
resolver.setTemplateEngine(templateEngine());
resolver.setCharacterEncoding("UTF-8");
return resolver;
}
@Bean
public TemplateEngine templateEngine() {
SpringTemplateEngine engine = new SpringTemplateEngine();
engine.setEnableSpringELCompiler(true);
engine.setTemplateResolver(templateResolver());
return engine;
}
private ITemplateResolver templateResolver() {
springResourceTemplateResolver().setPrefix("/WEB-INF/templates/");
springResourceTemplateResolver().setTemplateMode(TemplateMode.HTML);
return springResourceTemplateResolver();
}
}
现在我需要在同一个应用程序中添加一个jsp解析器 . 我正在添加InternalResourceViewResolver bean,但它不能按预期工作:
@Bean
public InternalResourceViewResolver jspViewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/WEB-INF/views/");
resolver.setSuffix(".jsp");
return resolver;
}
当我去/ test / jsp时,我得到一个错误,而不是获取test_jsp页面:
@RequestMapping(value = "/test/leaf", method = RequestMethod.GET)
public String mainPage() {
return "test_html.html";
}
@RequestMapping(value = "/test/jsp", method = RequestMethod.GET)
public String mainPage2() {
return "test_jsp";
}
请求处理失败;嵌套异常是org.thymeleaf.exceptions.TemplateInputException:模板解析期间发生错误(模板:“ServletContext资源[/ WEB-INF / templates / test_jsp]”)
当ThymeLeaf已经到位时,有谁知道如何添加jsp视图解析器?我需要Spring首先寻找Thymeleaf,当找不到页面时,他会搜索jsp . 谢谢
1 回答
将
ThymeleafViewResolver
上的order
属性设置为比其他解析器上的其他order
属性更低的整数 . 零对你的情况有意义 .对于您的控制器,您只需要返回页面名称并省略扩展名(.html) .
最后,当您向SO发布错误消息时发布完整跟踪 . 就目前而言,您的JSP也可能存在问题,但这里的读者无法轻易说出来 .