先定义一个摸板类,该类实现TemplateMethodModel接口,在方法EXEC中定义自己的逻辑;
public class DatetimeMethodFreeMarker implements TemplateMethodModel {
private static final String DEFAULT_PATTERN = "yyyy-MM-dd";
/* (非 Javadoc)
* @see freemarker.template.TemplateMethodModel#exec(java.util.List)
*/
public Object exec(List args) throws TemplateModelException {
// TODO 自动生成方法存根
Date date = new Date();
String year = args.get(0).toString();
String month = args.get(1).toString();
String day = args.get(2).toString();
return DateUtil.getDateFromAs400(year, month, day);
}
}
定义一个FreemarkerManager的子类,将自定义的摸板类进行共享,这里将摸板的名字设为dateTimeMarker;这样在摸板文件中就可以通过dateTimeMarker来进行调用;
public class ExtendedFreemarkerManager extends FreemarkerManager {
protected Configuration createConfiguration(ServletContext servletContext)
throws TemplateException {
Configuration configuration = super.createConfiguration(servletContext);
configuration.setSharedVariable(
"dateTimeMarker",
new DatetimeMethodFreeMarker());
// 加入时间日期处理
return configuration;
}
}
在webwork.properties文件中增加:
webwork.freemarker.manager.classname=com.cigna.smsplatform.util.ExtendedFreemarkerManager;
在模板文件中通过${dateTimeMarker(year,month,day)}这种方法就可以调用我们自定义的摸板解析类了;
public class DatetimeMethodFreeMarker implements TemplateMethodModel {
private static final String DEFAULT_PATTERN = "yyyy-MM-dd";
/* (非 Javadoc)
* @see freemarker.template.TemplateMethodModel#exec(java.util.List)
*/
public Object exec(List args) throws TemplateModelException {
// TODO 自动生成方法存根
Date date = new Date();
String year = args.get(0).toString();
String month = args.get(1).toString();
String day = args.get(2).toString();
return DateUtil.getDateFromAs400(year, month, day);
}
}
定义一个FreemarkerManager的子类,将自定义的摸板类进行共享,这里将摸板的名字设为dateTimeMarker;这样在摸板文件中就可以通过dateTimeMarker来进行调用;
public class ExtendedFreemarkerManager extends FreemarkerManager {
protected Configuration createConfiguration(ServletContext servletContext)
throws TemplateException {
Configuration configuration = super.createConfiguration(servletContext);
configuration.setSharedVariable(
"dateTimeMarker",
new DatetimeMethodFreeMarker());
// 加入时间日期处理
return configuration;
}
}
在webwork.properties文件中增加:
webwork.freemarker.manager.classname=com.cigna.smsplatform.util.ExtendedFreemarkerManager;
在模板文件中通过${dateTimeMarker(year,month,day)}这种方法就可以调用我们自定义的摸板解析类了;
Freemarker自定义日期处理
本文介绍如何在Freemarker模板引擎中自定义日期处理方法,并通过扩展FreemarkerManager来实现共享自定义模板类。
1134

被折叠的 条评论
为什么被折叠?



