当前位置: 首页 > 知识库问答 >
问题:

无法读取freemarker模板

董高朗
2023-03-14

我的文件在src/main/Resources/freemarker/email_notification.txt

我无法读取freemaker文件,即电子邮件通知。txt,其中包含html文件。

我的推荐信来自这里:http://websystique.com/spring/spring-4-email-using-velocity-freemaker-template-library/

我尝试过速度法,但有些单词中有删除线,因此我选择了自由标记法。

 @Transactional
    @Service("EmailService")
    public class EmailService{

        @Autowired
        JavaMailSender mailSender;

        @Autowired
        Configuration freemarkerConfiguration;


    public void sendEmail(Map<String, Object> params) {



        MimeMessagePreparator preparator = getMessagePreparator(params);

        try {
            mailSender.send(preparator);
            System.out.println("Message has been sent.............................");
        }
        catch (MailException ex) {
            System.err.println(ex.getMessage());
        }
    }


    private MimeMessagePreparator getMessagePreparator(final Map<String, Object> params){

        MimeMessagePreparator preparator = new MimeMessagePreparator() {

            public void prepare(MimeMessage mimeMessage) throws Exception {
                MimeMessageHelper helper = new MimeMessageHelper(mimeMessage, true);

                helper.setSubject(params.get("trnmaster").toString());
                helper.setFrom("XXXXX@gmail.com");
                helper.setTo("XXXXXX@hotmail.com");


                String text = geFreeMarkerTemplateContent(params);//Use Freemarker or Velocity
                System.out.println("Template content : "+text);

                helper.setText(text, true);

            }
        };
        return preparator;
    }


    public String geFreeMarkerTemplateContent(Map<String, Object> model){
        StringBuffer content = new StringBuffer();
        try{
         content.append(FreeMarkerTemplateUtils.processTemplateIntoString( 
                 freemarkerConfiguration.getTemplate("/email_notification.txt"),model));

         return content.toString();
        }catch(Exception e){
            System.out.println("Exception occured while processing fmtemplate:"+e.getMessage());
        }
          return "";
    }



}

配置文件的一部分

@Bean
    public FreeMarkerConfigurationFactoryBean getFreeMarkerConfiguration() {
        FreeMarkerConfigurationFactoryBean bean = new FreeMarkerConfigurationFactoryBean();
        bean.setTemplateLoaderPath("classpath:/freemarker/");
        return bean;
    }

共有1个答案

杜烨伟
2023-03-14

在配置FreeMarker时,应该使用:bean.setTemplateLoaderPath("classpath:/freemarker/");

这个例子也很奇怪。为什么文件扩展名是txt?超文本标记语言模板应该是ftlh(在旧项目中是ftl)。另外,我肯定会覆盖FreeMarkerConfigurationFactoryBean.postProcessConfiguration,并根据https://freemarker.apache.org/docs/pgui_quickstart_createconfiguration.html进行推荐的设置,除了您不能调用setDirectoryForTemplateLoding,并且可能setDefaultEncode已经被Spring设置为很好。确保获得自动超文本标记语言转义非常重要(不兼容改进设置为2.3.24或更高,并且ftlh文件扩展名可以做到这一点)。

 类似资料:
  • 我对使用Dropwizard和Freemarker模板非常陌生。我正在尝试加载免费标记模板。但是,图像不会加载到正在显示的页面中 我使用html的标准img标记来显示图像 这些图像在jar文件中可用。 以下是该项目的结构 src |-main |--resources |--media |--images |--mload。巴布亚新几内亚 请让我知道如果我错过了任何显示图像

  • 我已经按照下面的链接使用spring的Swagger为我的REST服务创建API文档。 http://jakubstas.com/spring-jersey-swagger-configuration/#comment-1726 一切都很顺利,但当我试图使用url http://localhost:8080/rest/api-docs访问swagger的api文档时,我发现无法读取swagger

  • 我们的使用和配置基于https://github.com/hdineth/springboot-freemaker-email-send: 但是,任何地方都没有关于如何使用JUnit5为此运行单元测试的信息或文档。 当我添加相关的依赖项时 在我们的实际代码中(这是一个大的多模块项目),我有另一个错误,原因是: 但这只是为了上下文,首先我想让它在简单的示例项目中工作,然后担心让它在复杂的项目中工作。

  • 我使用最新的freemarker版本2.3.23我有列表,其中包含用户对象,用户对象很简单,只包含名称属性。我的ftl文件如下所示: 我的Java代码如下所示: 错误显示如下:

  • 第一次在JAVA项目上使用FreeMarker,在配置汉字时使用堆栈。 看到了一些对FreeMarker.Properties进行更改的示例请求,但我没有这个文件。我只是导入。jar文件并使用它。 请告诉我该怎么做才能让它显示汉字。

  • 当我点击登录按钮并通过数据库成功登录后,它被重定向到hello.ftl页面。但是ftl页面显示此错误 FreeMarker模板错误(调试模式;在生产中使用RETHROW!):以下内容的计算结果为null或missing:==>var[在模板“hello.ftl”第8行,第32列]----提示:如果已知失败的表达式在法律上引用了有时为null或missing的内容,可以指定默认值,如myoption