首页 > 其他分享 >日常记录-FreeMarker模板简单使用

日常记录-FreeMarker模板简单使用

时间:2024-07-20 08:59:01浏览次数:13  
标签:return String FreeMarker templateName 日常 template import 模板

1. 依赖包

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.30</version>
</dependency>

2.工具类 

import freemarker.template.Configuration;
import freemarker.template.Template;
import freemarker.template.TemplateException;
import org.apache.commons.lang3.StringUtils;

import java.io.IOException;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;

public class FreeMarkerUtil {


    /**
     * 获取模板
     *
     * @param templateName 模板名称
     * @return 模板
     */
    public static Template getTemplate(String templateName) {
        try {
            //通过Freemaker的Configuration读取相应的ftl
            Configuration cfg = new Configuration(Configuration.VERSION_2_3_30);
            //设定去哪里读取相应的ftl模板文件
            cfg.setClassForTemplateLoading(Template.class, "/templates/");
            //在模板文件目录中找到名称为name的文件
            Template temp = cfg.getTemplate(templateName);
            return temp;
        } catch (IOException e) {
            return null;
        }
    }

    /**
     * 获取替换后的模板
     *
     * @param templateName      模板名称
     * @param replaceVariateMap 需要替换的变量
     * @return 替换后的模板
     */
    public static String getReplaceTemplate(String templateName, Map replaceVariateMap) {
        try {
            if (StringUtils.isBlank(templateName)) {
                return null;
            }
            Template template = FreeMarkerUtil.getTemplate(templateName);
            if (template == null) {
                return null;
            }
            StringWriter out = new StringWriter();
            template.process(replaceVariateMap, out);
            StringBuffer buffer = out.getBuffer();
            return buffer.toString();
        } catch (TemplateException e) {
            return null;
        } catch (IOException e) {
            return null;
        }
    }

    public static void main(String[] args) {
        String dam_pwdrest_email_jumppath = "地址";
        HashMap map = new HashMap();
        map.put("dam_pwdrest_email_jumppath", dam_pwdrest_email_jumppath);
        String replaceTemplate = getReplaceTemplate("pwdreset_sendemail_template.ftl", map);
        System.err.println(replaceTemplate);
    }
}

标签:return,String,FreeMarker,templateName,日常,template,import,模板
From: https://blog.csdn.net/CSDN20230104/article/details/140531833

相关文章

  • 日常记录-GoogleASuth 认证
     1.依赖<!--googleauth--><dependency>      <groupId>com.warrenstrange</groupId>      <artifactId>googleauth</artifactId>      <version>1.4.0</version></dependency><dependency>     ......
  • swagger 日常使用记录
    swagger相关依赖:    <!--swagger-->    <dependency>      <groupId>io.springfox</groupId>      <artifactId>springfox-swagger2</artifactId>      <version>2.9.2</version>    </......
  • 日常工作中需要避免的9个React坏习惯
    日常工作中需要避免的9个React坏习惯前言React是前端开发领域中最受欢迎的JavaScript库之一,但有时候在编写React应用程序时,可能陷入一些不佳的习惯和错误做法。这些不佳的习惯可能导致性能下降、代码难以维护,以及其他问题。在本文中,我们将探讨日常工作中应该避免的9个坏React......
  • P3373 【模板】线段树 2(区间乘+加操作,先乘后加原则)
    题目来源:https://www.luogu.com.cn/problem/P3373//题意:对区间[l,r]可以乘法,加法操作,查询和操作。//思路:既有乘法又有加法,肯定是要有两个标记。纯加法和纯乘法操作是很简单的,但是既有乘法又有加法涉及到先乘后加和先加后乘的顺序。//////所以现在是如何将先加后成也可以......
  • [WesternCTF2018]shrine(Jinja2模板注入)
    首先判断出是Jinja2模板注入判断方法https://www.cnblogs.com/dghh/p/18307622importflaskimportos#创建一个Flask应用实例app=flask.Flask(__name__)#从环境变量中读取'FLAG'并设置到应用配置中app.config['FLAG']=os.environ.pop('FLAG')#定义根路径('/......
  • 易优CMS模板标签uitype栏目调用在模板文件index.htm中调用uitype标签,实现指定栏目可视
    【基础用法】标签:uitype描述:栏目编辑,比uitext、uihtml、uiupload标签多了一个typeid属性,使用时结合html一起才能完成可视化布局,只针对具有可视化功能的模板。用法:<divclass="eyou-edit"e-id="文件模板里唯一的数字ID"e-page='文件模板名'e-type="type">{eyou:uitypetypeid=......
  • 国产linux系统(银河麒麟,统信uos)使用 PageOffice 国产版在线打开 word文件自定义模板中
    国产linux系统(银河麒麟,统信uos)使用PageOffice国产版在线打开pdf文件PageOffice国产版:支持信创系统,支持银河麒麟V10和统信UOS,支持X86(intel、兆芯、海光等)、ARM(飞腾、鲲鹏、麒麟等)芯片架构。本示例关键代码的编写位置Vue+Springboot注意本文中展示的代码均为关键代码,复......
  • 易优CMS模板标签modelsartlist频道循环输出顶级栏目列表
    [基础用法]标签:modelsartlist(channelartlist)备注:使用channelartlist也可以正常输出描述:获取当前栏目分类的下级栏目的文档列表用法:{eyou:modelsartlisttypeid='栏目ID'type='son'loop='20'}<ahref='{eyou:fieldname='typeurl'/}'>{eyou:fi......
  • 模板方法设计模式
    模板方法设计模式:模板方法设计模式:解决方法中存在重复代码的问题。  模板方法设计模式的写法:1、定义一个抽象类2、在里面定义2个方法​一个是模板方法:把相同代码放里面去​一个是抽象方法:具体实现交给子类完成建议使用final关键字修饰模板方法:​模板方......
  • Tarjan模板
    structSCC{inttop=0,cntscc=0,dfncnt=0;vector<int>dfn,low,stk,instk;vector<int>sccnum,sccid;vector<vector<int>>g,scc;SCC(intn){dfn.assign(n+1,0);low.assign(n+1,0......