SpringResourceTemplateResolver和ClassLoaderTemplateResolver有什么区别?

时间:2019-02-20 14:56:54

标签: spring spring-boot spring-mvc thymeleaf

我正在尝试构想我的项目。我有tempalteResolver的两个变体。 如果我使用这个:

 @Bean
    public SpringResourceTemplateResolver templateResolver() {
        SpringResourceTemplateResolver templateResolver = new SpringResourceTemplateResolver();
        templateResolver.setApplicationContext(applicationContext);
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode(TemplateMode.HTML);
        templateResolver.setCacheable(true);
        return templateResolver;
    }

我收到一个错误,即使我添加xmlns:th =“ http://www.thymeleaf.org”,我的模板也无法解析百里香语法。

以及当我使用以下代码时:

  @Bean
    public ClassLoaderTemplateResolver templateResolver() {
        ClassLoaderTemplateResolver templateResolver = new ClassLoaderTemplateResolver();
        templateResolver.setPrefix("/WEB-INF/templates/");
        templateResolver.setSuffix(".html");
        templateResolver.setTemplateMode(TemplateMode.HTML);
        templateResolver.setCacheable(false);
        templateResolver.setCharacterEncoding("UTF-8");
        return templateResolver;
    }

我收到一条错误消息,指出该路径下没有模板(/ WEB-INF / templates)。

我的模板的完整路径是src \ main \ webapp \ WEB-INF \ templates \

要使用的最佳模板解析器是什么,为什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

您应该将SpringResourceTemplateResolver用于Web项目(使用SpringMvc控制器),将ClassLoaderTemplateResolver用于命令行项目,或者在需要为非Web应用程序生成html(例如发送html电子邮件或类似内容)时使用。

发生第一次错误是因为春季安全性以某种方式未连接到项目和我的

 Authentication auth = SecurityContextHolder.getContext().getAuthentication();
modelAndView.addObject("auth", auth);

发送空值。 第二个错误我不知道为什么会发生。

相关问题