freemarker中使用String字符串作为模板
程序员文章站
2022-03-04 18:49:34
...
在日常开发中,我们有时候需要发送短信、邮件等通知,但是这些通知的内容通常都是动态的,而且可能会发生变动,为了程序的灵活性,我们通常会将通知的内容配置在页面上,然后后台通过渲染这些模板,来获取具体的内容。而 freemarker 正好可以帮助我们来完整模板的渲染这一步。
需求:
1、给定一个字符串模板,渲染出内容
2、修改这个字符串模板,然后再次渲染
实现要点:
1、模板的加载器需要使用 StringTemplateLoader
2、模板不可使用 Configuration.getTemplate,而应该使用 new Template
3、StringTemplateLoader 上的一段注释
完整代码如下:
@Test public void test001() throws Exception { String templateName = "hello-template"; String templateValue = "hello,${name}"; Configuration configuration = configuration(); processTemplate(configuration, templateName, templateValue); // -------------------- 进行模板的修改 ------------------------ templateValue = "hello,${name},我今年,${age}岁."; processTemplate(configuration, templateName, templateValue); } /** * 解析模板 * * @param configuration * @param templateName * @throws IOException * @throws TemplateException */ private void processTemplate(Configuration configuration, String templateName, String templateValue) throws IOException, TemplateException { Map<String, Object> root = new HashMap<>(4); root.put("name", "你好"); root.put("age", 25); StringWriter stringWriter = new StringWriter(); Template template = new Template(templateName, templateValue, configuration); template.process(root, stringWriter); System.out.println(stringWriter.toString()); } /** * 配置 freemarker configuration * * @return */ private Configuration configuration() { Configuration configuration = new Configuration(Configuration.VERSION_2_3_27); StringTemplateLoader templateLoader = new StringTemplateLoader(); configuration.setTemplateLoader(templateLoader); configuration.setDefaultEncoding("UTF-8"); return configuration; }
执行结果:
推荐阅读
-
Python的string模块中的Template类字符串模板用法
-
C#中如何正确的使用字符串String
-
Vue中的字符串模板的使用
-
【转载】C#中string类使用Replace方法来替换字符串
-
springboot中,使用freemarker模板
-
java字符串类String类中的使用方法
-
【转载】C#中string类使用Substring方法截取字符串
-
以下程序段实现“字符串变形拷贝”,将源字符串拷贝到目标字符串,并且 将其中的小写字母转换成大写字母,而其它字符保持不变。填写空缺的代码。 要求:不使用string.h中的函数。
-
Python的string模块中的Template类字符串模板用法
-
Vue中的字符串模板的使用