使用application.properties中指定的模式
intellij run debug工作正常,但是当浏览器试图打开页面时,从命令行执行jar会得到以下结果:
2018-12-24 12:16:13.957错误---[0.1-8080-exec-1]org.thymeleaf.templateengine:[thymeleaf][http-nio-12
7.0.0.1-8080-exec-1]异常处理模板“result sm”:模板模式“html”尚未配置
2018年12月24日下午12:16:14 org.apache.catalina.core.standardWrapperValve调用
严重:路径为[]的上下文中servlet[Dispatcherservlet]的servlet.service()引发异常[请求处理fa
iled;嵌套异常为org.thymeleaf.exceptions.templateinputexception:尚未配置模板模式“html”]
有根本原因
org.thymeleaf.exceptions.templateinputexception:尚未配置模板模式“html”
在org.thymeleaf.templaterepository.getTemplate(templaterepository.java:256)
在org.thymeleaf.templateengine.process上(templateengine.java:1104)
在org.thymeleaf.templateengine.process上(templateengine.java:1060)
在org.thymeleaf.templateengine.process上(templateengine.java:1011)
位于org.thymeleaf.spring4.view.thymeleafview.renderfragment(thymeleafview.java:335)
在org.thymeleaf.spring4.view.thymeleafview.render上(thymeleafview.java:190)
位于org.springframework.web.servlet.dispatcherservlet.render(dispatcherservlet.java:1286)
如果模式声明从application.properties中删除,jar将假定该模式是legacyhtml5,并尝试执行根本不是html5的nekohtml解析。例如它说
<linK>
没有匹配的
</link>
是的。
看来这应该有一个简单的解决办法,但我一直找不到。
谢谢
编辑:为模板解析程序添加了代码。我从另一个网站复制了这段代码,但没有得到足够的理解。它被修改以适应实际的项目结构。我用调试器运行它,但它似乎没有被调用。
@Configuration
@EnableWebMvc
public class ThymeleafConfig extends WebMvcConfigurerAdapter {
@Bean
public ClassLoaderTemplateResolver templateResolver() {
ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
templateResolver.setPrefix("templates/");
templateResolver.setCacheable(false);
templateResolver.setSuffix(".html");
templateResolver.setTemplateMode(TemplateMode.HTML);
templateResolver.setCharacterEncoding("UTF-8");
return templateResolver;
}
@Bean
public SpringTemplateEngine templateEngine() {
SpringTemplateEngine templateEngine = new SpringTemplateEngine();
templateEngine.setTemplateResolver(templateResolver());
return templateEngine;
}
@Bean
public ViewResolver viewResolver() {
ThymeleafViewResolver viewResolver = new ThymeleafViewResolver();
viewResolver.setTemplateEngine(templateEngine());
viewResolver.setCharacterEncoding("UTF-8");
return viewResolver;
}
@Override
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/").setViewName("index");
}