Strut2和FreeMarker整合时的一些问题

简介: 在struts2与freemarker整合时,可以在项目的类路径下放置freemarker.properties配置文件, struts2会自动读取(struts2封装了)。今天用freemarker作为模板生成静态文件时,发现并不读取freemarker.properties配置文件。 看一下freemarker源码,freemarker本身并不加载freemarker.proper
在struts2与freemarker整合时,可以在项目的类路径下放置freemarker.properties配置文件,

struts2会自动读取(struts2封装了)。今天用freemarker作为模板生成静态文件时,发现并不读取freemarker.properties配置文件。

看一下freemarker源码,freemarker本身并不加载freemarker.properties配置文件,需要代码中指定配置文件。

代码如下:

 

Java代码 复制代码  收藏代码
  1. package com.ldl.freemarker;   
  2.   
  3. import java.io.BufferedWriter;   
  4. import java.io.IOException;   
  5. import java.io.OutputStreamWriter;   
  6. import java.io.Writer;   
  7. import java.util.HashMap;   
  8. import java.util.Map;   
  9. import java.util.Properties;   
  10.   
  11. import freemarker.cache.ClassTemplateLoader;   
  12. import freemarker.template.Configuration;   
  13. import freemarker.template.DefaultObjectWrapper;   
  14. import freemarker.template.Template;   
  15. import freemarker.template.TemplateException;   
  16.   
  17. public class freemarkerTest {   
  18.   
  19.     /**  
  20.      * @param args  
  21.      * @throws IOException   
  22.      * @throws TemplateException   
  23.      */  
  24.     @SuppressWarnings("unchecked")   
  25.     public static void main(String[] args) throws IOException, TemplateException {   
  26.         Configuration cfg = new Configuration();   
  27.         cfg.setTemplateLoader(new ClassTemplateLoader(freemarkerTest.class,""));   
  28.         cfg.setObjectWrapper(new DefaultObjectWrapper());   
  29.         //加载并设置freemarker.properties   
  30.         Properties p = new Properties();   
  31.         p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("freemarker.properties"));   
  32.         cfg.setSettings(p);   
  33.         /* 在整个应用的生命周期中,这个工作你可以执行多次 */  
  34.         /* 获取或创建模板*/  
  35.         Template temp = cfg.getTemplate("test.xml");   
  36.         /* 创建数据模型 */  
  37.         Map root = new HashMap();   
  38.         root.put("user""Big Joe");   
  39.         /* 将模板和数据模型合并 */  
  40.         Writer out = new BufferedWriter(new OutputStreamWriter(System.out));   
  41.         temp.process(root, out);   
  42.         out.flush();   
  43.     }   
  44. }  
package com.ldl.freemarker;

import java.io.BufferedWriter;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;

import freemarker.cache.ClassTemplateLoader;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapper;
import freemarker.template.Template;
import freemarker.template.TemplateException;

public class freemarkerTest {

	/**
	 * @param args
	 * @throws IOException 
	 * @throws TemplateException 
	 */
	@SuppressWarnings("unchecked")
	public static void main(String[] args) throws IOException, TemplateException {
		Configuration cfg = new Configuration();
		cfg.setTemplateLoader(new ClassTemplateLoader(freemarkerTest.class,""));
		cfg.setObjectWrapper(new DefaultObjectWrapper());
		//加载并设置freemarker.properties
		Properties p = new Properties();
		p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("freemarker.properties"));
		cfg.setSettings(p);
		/* 在整个应用的生命周期中,这个工作你可以执行多次 */
		/* 获取或创建模板*/
		Template temp = cfg.getTemplate("test.xml");
		/* 创建数据模型 */
		Map root = new HashMap();
		root.put("user", "Big Joe");
		/* 将模板和数据模型合并 */
		Writer out = new BufferedWriter(new OutputStreamWriter(System.out));
		temp.process(root, out);
		out.flush();
	}
}

 测试代码在附件中,freemarker.properties里的default_encoding值为utf-8,看控制台打印的是否有乱码,如果有乱码说明生效了。

目录
相关文章
|
1月前
|
XML Java 数据格式
freemarker使用总结
freemarker使用总结
|
1月前
|
XML Java 数据格式
freemarker
freemarker
|
6月前
|
开发框架 Java .NET
Sitemesh3使用及配置
Sitemesh3使用及配置
|
12月前
|
前端开发 Java Spring
Spring MVC-06循序渐进之Converter和Formatter
Spring MVC-06循序渐进之Converter和Formatter
57 0
|
消息中间件 Java 应用服务中间件
Freemarker(下)
Freemarker(下)
146 0
Freemarker(下)
|
XML Java Maven
Freemarker(上)
Freemarker(上)
137 0
Freemarker(上)
|
Java Maven
关于SpringMVC整合freemarker报错问题
错误信息: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'FreeMarkerConfigurer' defined in class path resource [spring-mvc.
1611 0