使用application.properties中指定的模式
#spring.thymeleaf.mode=HTML
Intellij运行调试工作正常,但是当浏览器尝试打开页面时,从命令行执行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 ed嵌套的异常是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,并且它将尝试进行nekoHTML解析,而根本不是HTML5。例如,它说<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");
}