Strut2和FreeMarker整合时的一些问题

在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,看控制台打印的是否有乱码,如果有乱码说明生效了。

时间: 2024-11-03 22:21:02

Strut2和FreeMarker整合时的一些问题的相关文章

spring mvc-SpringMVC freemarker 整合问题

问题描述 SpringMVC freemarker 整合问题 Spring mvc freemaker 配置了那个日期时间的转换 但是在ftl文件里面${参数}报错 难道要自己调用内部函数格式化吗 先上图吧 各位帮忙看看!spring freemaker 配置 解决方案 Properties文件中只是存放了你的配置信息,他自己不会自动帮你转换哦它只是以一种键值对的形式存在了那个文件中 解决方案二: freemarker 之 整合springMVC/struts2springMVC整合Freema

ssh整合-spring整合hibernate做测试时没有报错,当三个整合时启动就报错啦,求大神指点!!

问题描述 spring整合hibernate做测试时没有报错,当三个整合时启动就报错啦,求大神指点!! 报的错误org.springframework.scheduling.quartz.JobMethodInvocationFailedException: Invocation of method 'ecsUnsigned' on target class [class $Proxy17] failed; nested exception is org.springframework.tran

java-我的hibernate和spring 整合时getHibernateTemplate().find出现空指针问题

问题描述 我的hibernate和spring 整合时getHibernateTemplate().find出现空指针问题 Spring组件: class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <!-- 数据库连接参数信息 --> 方言,映射描述都没问题,/context:component-scan <bean id="txManager" class=&

javaweb 三大...-三大框架整合时出现错误。

问题描述 三大框架整合时出现错误. 整合时出现. No bean named "" is defind. 拜托大家的图图i 解决方案 没有找到name为某某的bean.1没有注入spring2name写错了 解决方案二: 检查下spring的配置文件中,有没有bean定义的name属性为空串的 .不介意的话贴出来帮你查查. 解决方案三: 你用的是自动注入的还是手动配置的注入的?1.自动注入,你看看你的注解是否有问题.2.手动注入,你看看你的bean id 值是否正确,应用该bean的地

ssh整合-SSH整合时出现空指针问题

问题描述 SSH整合时出现空指针问题 最近在做实训,所以想尝试用SSH框架来做个项目,我跟着视频,一步一步的敲代码,一运行, 报空指针,好吧,看看是什么说,根据提示信息:是employeeService为null,可是我在 applicationContext-bean.xml的配置文件中已经注入了啊: 这下就难道我了,在网上搜索了快两天了,还是没有头绪,所以特来请教大神们,教教我呗: 项目我上传在: http://1185651333201311151844.iteye.com/admin/b

freemarker-spring4MVC+Freemarker整合使用问题

问题描述 spring4MVC+Freemarker整合使用问题 在整合的freemarker代码如下 <property name=""viewClass"" value="" org.springframework.web.servlet.view.freemarker.FreeMarkerView""/> <property name=""contentType""

struts 2-Struts2与Hibernate整合时无法读取数据库中的数据

问题描述 Struts2与Hibernate整合时无法读取数据库中的数据 2C 小弟最近学习SSH框架,遇到一个问题,同时使用Struts2和Hibernate3.6时,Action中调用hibernateUtil的方法无法获取数据,而在测试类的main()方法里却能成功调用,小弟百思不得其解,恳请各位大神指点. 关键源代码如下: 业务逻辑ShowStuAction: public class ShowStuAction extends ActionSupport { private int p

spring springmvc mybatis整合时,tomcat启动正常,查询数据库时报错

问题描述 spring springmvc mybatis整合时,tomcat启动正常,查询数据库时报错 Could not get JDBC Connection; nested exception is org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Access denied for user 'root'@'localhost' (using password: YE

Spring4.0.6与Dubbo整合时找不到spring-asm jar包

问题描述 Spring4.0.6与Dubbo整合时找不到spring-asm jar包 按照网上的教程,在整合的时候需要导入spring-asm的jar包.可是不管在哪里都找不到相应的资源,查找资料有人说是被整合到core jar中了,那么直接使用是否会有影响? 解决方案 重新下载一个呗~! 解决方案二: Dubbo整合Spring时jar包冲突问题spring asm JAR冲突 解决方案三: 去中央仓库找个下载下来 解决方案四: 下个jar加进去//////