带有Spring Boot和Thymeleaf的Intellij jar工件获得,尚未配置模板模式“ HTML”

时间:2018-12-24 20:57:33

标签: java spring spring-boot intellij-idea thymeleaf

使用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");
    }

0 个答案:

没有答案