代码之家  ›  专栏  ›  技术社区  ›  Russell Salsbury

带有spring boot和thymeleaf get的intellij jar工件,模板模式“html”尚未配置

  •  1
  • Russell Salsbury  · 技术社区  · 6 年前

    使用application.properties中指定的模式

    #spring.thymeleaf.mode=HTML
    

    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");
        }
    
    0 回复  |  直到 6 年前