`

freemarker中使用String字符串作为模板

阅读更多

   在日常开发中,我们有时候需要发送短信、邮件等通知,但是这些通知的内容通常都是动态的,而且可能会发生变动,为了程序的灵活性,我们通常会将通知的内容配置在页面上,然后后台通过渲染这些模板,来获取具体的内容。而 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;
	}

 

执行结果:

 

  • 大小: 111 KB
  • 大小: 27.5 KB
分享到:
评论

相关推荐

    Freemarker操作字符串

    在FreeMarker模板中,可以使用`+`运算符来连接字符串。例如: ```html , "&gt; !"&gt; ${str1 + str2} ``` 这将输出:"Hello, World!" 2. **字符串格式化**: FreeMarker允许使用`printf`指令进行格式化输出,...

    Freemarker_内置函数_数字、字符串、日期格式化.txt

    根据提供的文件信息,我们可以深入探讨Freemarker中的内置函数,主要关注数字、字符串以及日期的格式化处理。Freemarker是一种强大的模板引擎,被广泛应用于Web开发和其他领域中,用于生成动态HTML页面或其他类型的...

    freemarker语法知识

    可以使用内建的字符串函数进行进一步格式化,例如:`?string`,`?string.number`,`?string.currency`,`?string.percent`等。 - 日期值:根据默认格式转换为文本,同样可以通过`?string`配合特定格式字符串进行...

    基于itext7+freemarker模板导出pdf

    模板中可以使用FreeMarker语法 `${}` 来引用数据模型中的变量。 步骤三:准备数据模型 定义一个Java对象或Map来存储要展示的数据。例如: ```java Map&lt;String, Object&gt; data = new HashMap(); data.put("title", ...

    Java用正则表达式实现${name}形式的字符串模板实例

    在给定的实例中,`renderString` 方法演示了如何使用正则表达式和Java的 `Pattern` 和 `Matcher` 类来完成字符串模板的替换。以下是对这个方法的详细解释: 1. 首先,`renderString` 方法接受两个参数:一个包含...

    FreeMarker模板基本语法

    FreeMarker使用FTL标签来定义其专有的语法结构,这有助于区分模板中的逻辑控制部分与普通的HTML标记。具体来说: 1. **开始标签**:&lt;#directivename parameter&gt; 开始标签定义了指令的开始位置,并指定了指令参数。 ...

    FreeMarker+poi 模板生成word+导入图片

    2. **FreeMarker配置**: 在Java代码中,设置FreeMarker的配置,加载模板文件,并定义数据模型,该模型包含要填充到模板中的数据,比如图片路径。 3. **POI读取模板**: 使用Apache POI的`XWPFDocument`类打开模板文件...

    freemarker模板

    4. **模板测试**: 可以使用FreeMarker提供的API编写单元测试,确保模板的正确性。 总结起来,FreeMarker是一款强大且灵活的模板引擎,它通过分离视图和逻辑,提高了Web开发的效率。理解和熟练运用FreeMarker的语法...

    java通过freemarker模板导出word含图片

    在模板文件中,可以使用FreeMarker的`&lt;#assign&gt;`指令将这个字符串赋值给一个变量。 5. **生成Word文档**: 使用FreeMarker的`Template`类加载模板文件,然后用`process`方法将数据模型与模板结合,生成最终的Word...

    FreeMarker中文文档.pdf下载

    字符串处理是FreeMarker中的一个重要方面,可以进行字符串的拼接、截取、替换等操作。例如: ```ftl ${str?upper_case} &lt;!-- 输出 "HELLO WORLD" --&gt; ${str?replace("o", "0")} &lt;!-- 输出 "Hell0 W0rld" --&gt; ``` ...

    freemarker_常用内置函数

    Freemarker 常用内置函数 Freemarker 是一个基于 Java 的模板引擎,它提供了一些非常有用的内置函数,可以帮助我们快速开发和...在 Freemarker 模板中,我们可以使用这些内置函数来实现各种复杂的逻辑操作和数据处理。

    freemarker中文手册

    string`:将对象转换为字符串,即使对象为null也会返回空字符串。 3. `?length`:获取列表或字符串的长度。 4. `?exists`:检查变量是否存在,返回true或false。 四、Freemarker与Java的交互 1. `ModelAndView`:在...

    Java模板引擎之FreeMarker

    首先,你需要从`Configuration`对象中获取模板,然后用它和数据模型一起生成字符串输出: ```java Template template = cfg.getTemplate("template.ftl"); Map&lt;String, Object&gt; model = new HashMap(); model.put(...

    两种freemarker模板路径设置方法.docx

    在实际应用中,我们可以根据配置获取到Freemarker的`Template`对象,然后处理模型数据并生成字符串,例如: ```java // 使用FreeMarkerConfigurer Template t = freeMarkerConfigurer.getConfiguration()....

    freemarker 2.3.18 中文手册

    string`将非字符串转换为字符串,`?length`获取数组或集合的长度等。 5. **模板配置**:通过`freemarker.properties`配置文件,可以设置模板解析的全局行为,如模板的编码、错误处理模式、日期时间格式等。 6. **...

    freemarker初探 附 freemarker中文手册 与 struts2 checkboxlist的研究

    例如,`context.put("title", "A Single FreeMarker Example")`将一个键值对放入上下文,其中"message"对应着字符串"A Single FreeMarker Example"。 接下来,我们创建了一个`Configuration`对象,这是Freemarker的...

    freemarker实例,真实

    在模板中,动态数据通过`${}`或`#if`、`#foreach`等控制结构来插入或处理。 3. **配置Freemarker** 在Java项目中,首先需要创建一个`freemarker.config.Configuration`对象,并设置模板目录。在这个实例中,由于...

    Freemarker语法规则教程

    Freemarker支持简单的表达式运算,可以直接在模板中使用。 - **使用模型中的数据**:`${title}`,这里`title`是从前端传递过来的模型数据的一部分。 这使得Freemarker能够更加动态地处理数据。 #### 六、直接指定...

    JSP中截取在线编辑器的字符串的处理.

    此外,对于大型项目,我们还可以考虑在服务器端使用模板引擎(如FreeMarker或Velocity)来处理这种需求,这样可以更好地分离视图和逻辑,提高代码的可维护性。 总之,处理在线编辑器生成的HTML字符串时,我们需要...

Global site tag (gtag.js) - Google Analytics