目前做项目的时候,要通过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>