目前做项目的时候,要通过ajax去后台取得与Freemarker模板整合过的数据。于是就写了这样的一个类。
import java.io.StringWriter;
import org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer;
import freemarker.template.Configuration;
import freemarker.template.Template;
/**
* 自定义导入模板解析类<br>
* <li>导入模板时渲染模板用</li>
*
* @author zbq
* @date 2010-05-28
*/
public class ScreenResolver {
/**
* Freemarker配置
*/
private FreeMarkerConfigurer freemarkerConfigurer;
public FreeMarkerConfigurer getFreemarkerConfigurer() {
return freemarkerConfigurer;
}
public void setFreemarkerConfigurer(
FreeMarkerConfigurer freemarkerConfigurer) {
this.freemarkerConfigurer = freemarkerConfigurer;
}
/**
* 渲染视图, 将数据合并至模板中.
*
* @param ftlName
* @param model
* @return String
* @throws Exception
*/
public String mergeModelToTemlate(String ftlName, Map<String, Object> model)
throws Exception {
Template template = null;
StringWriter swriter = new StringWriter();
Configuration configuration = freemarkerConfigurer.getConfiguration();
template = configuration.getTemplate("/demo.ftl");
template.process(model, swriter);
return swriter.toString();
}
}
下面是xml文件中的Freemarker的配置,要导入到上面ScreenResolver类中
<!-- Freemarker配置 --> <bean id="freemarkerConfigurer" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer"> <property name="freemarkerSettings"> <props> <prop key="template_update_delay">0</prop> <prop key="defaultEncoding">UTF-8</prop> <prop key="number_format">0.##########</prop> <prop key="date_format">yyyy-MM-dd</prop> <prop key="time_format">HH:mm:Ss</prop> <prop key="datetime_format">yyyy-MM-dd HH:mm:Ss</prop> <prop key="classic_compatible">true</prop> </props> </property> </bean>