1.读取freemarker模板生成的文件
配置文件:
<!-- freemarker模板 -->
<bean id="freeMarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="classpath:template" />
<property name="freemarkerSettings">
<props>
<prop key="template_update_delay">0</prop>
<prop key="default_encoding">UTF-8</prop>
<prop key="locale">zh_CN</prop>
</props>
</property>
</bean>
java代码:
private FreeMarkerConfigurer freeMarkerConfigurer;
public FreeMarkerConfigurer getFreeMarkerConfigurer() {
return freeMarkerConfigurer;
}
public void setFreeMarkerConfigurer(FreeMarkerConfigurer freeMarkerConfigurer) {
this.freeMarkerConfigurer = freeMarkerConfigurer;
}
private String getXmlBody(User user){
String xmlBody = null;
try{
Template tpl = freeMarkerConfigurer.getConfiguration().getTemplate("template.ftl");
Map<String,String> map = new HashMap<String,String>();
map.put("cellphone", user.getCellphone());
String state = user.getState();
map.put("state",state);
xmlBody = FreeMarkerTemplateUtils.processTemplateIntoString(tpl,map);
}
catch(Exception e){
e.printStackTrace();
}
return xmlBody;
}
template.ftl
<?xml version="1.0" encoding="UTF-8"?>
<req ver="1.0"><isdn>${cellphone}</isdn><optType>${state}</optType></req>
2.输出freemarker模板生成的文件
<action name="xxx" class="XXXAction">
<result name="ftl" type="freemarker">
<param name="location">/WEB-INF/classes/template/xml.ftl</param>
<param name="contentType">application/xml</param>
</result>
</action>
xml.ftl
<?xml version="1.0" encoding="UTF-8"?>
<resp ver="1.0">
<${cxr.opt_name} ver="1.0">
<result resid="${cxr.result_type}" message="${cxr.message}">
<#list cxr.rlist as user><user><msisdn>${user.msisdn}</msisdn><cmsisdn>${user.cxyw_msisdn}</cmsisdn></user></#list>
</result>
</${cxr.opt_name}>
</resp>