有一个小需求,需要用FreeMarker直接在页面上获取当前时间,直接扩展FreeMarker的方法来实现。因为用到了Struts2,所以需要扩展Struts2的FreemarkerManager来实现。
一、写一个类继承Struts2的FreemarkerManager
package com.yourcompany.freemarker; import javax.servlet.ServletContext; import org.apache.struts2.views.freemarker.FreemarkerManager; import freemarker.template.Configuration; import freemarker.template.TemplateException; public class ExtendedFreemarkerManager extends FreemarkerManager { @Override protected Configuration createConfiguration(ServletContext servletContext) throws TemplateException { Configuration configuration = super.createConfiguration(servletContext); configuration.setSharedVariable("datetime", new DatetimeMethod()); // 加入时间日期处理 return configuration; } }
二、设置Struts2的常量,可以在struts.properties或者struts.xml文件中配置
写道
<constant name="struts.freemarker.manager.classname"
value="com.yourcompany.freemarker.ExtendedFreemarkerManager" />
value="com.yourcompany.freemarker.ExtendedFreemarkerManager" />
三、编写一个DatetimeMethod类来处理时间
package com.yourcompany.freemarker; import java.text.SimpleDateFormat; import java.util.Date; import java.util.List; import freemarker.template.TemplateMethodModel; import freemarker.template.TemplateModelException; /** * 根据传入的日期时间格式,在页面上直接取得当前时间的格式化结果 * 如果格式为空或者错误,将返回yyyy-MM-dd HH:mm:ss * 页面调用${datetime("yyyy")}/${datetime('yyyy')} * @see com.yourcompany.ExtendedFreemarkerManager#createConfiguration * @author Sunshine * */ public class DatetimeMethod implements TemplateMethodModel { private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss"; @SuppressWarnings("unchecked") public Object exec(List args) throws TemplateModelException { Date date = new Date(); String pattern = args.get(0).toString(); try { return new SimpleDateFormat(pattern).format(date); } catch (RuntimeException e) { return new SimpleDateFormat(DEFAULT_PATTERN).format(date); } } }
四、页面调用
${datetime("yyyy年M月d日")}
五、实现更多的方法
可以自定义方法,实现TemplateMethodModel接口,然后configuration.setSharedVariable("yourMethod", new YourMethodMethod());
相关推荐
简单的新闻发布系统 用到了SSH2框架 页面是用freemarker生成的静态页面 用户名Admin 密码123456
SSH项目 有Freemarker模版 原本带的还有maven 但是被我简化掉了
SSH+Freemarker 的整合方案最小项目案例
freemarker获取数据
ssh+FreeMarker静态化网页例子
SSH freemarker例子
简单的(ssh2+freemarker)新闻、产品管理系统
在struts2中使用freemarker模版.doc
这是一个关于SSH框架整合 和用FreeMarker技术来将动态网页静态化的操作事例
使用struts2的freemarker模板扩展struts标签
这个例子是Freemarker整合Struts2分页,包含了struts2和Freemarker的jar包,可以直接下载导入到Eclipse中运行.
众所周知,struts2宣称freemarker模板中不再支持自定义标签,但如果工程UI仅用freemarker模板可以通过扩展struts标签简单实现,不是采用官方不推荐的配置JspSupportServlet实现的!内付详细说明及范例,此方法仅为团队...
freemarker+struts2+在eclipse中创建maven项目写的一个例子有uxingqude朋友可以看看
SSH最新项目,以前上传过一个SSH项目,上传的是最开始的,没有什么技术,有位老兄下了评论我才知道的,这回是很全的项目(太大,没有包不好意思)
附件是我平时对一些技术的Demo,包含 Struts2 Hibernate Spring集成,涉及到CXF JSON FreeMarker等技术,SSH2使用的Struts2的零配置。有兴趣的可以下载研究学习。
FreeMarker设计指南.doc
FreeMarker页面制作规范 页面规范的重要性 宏的简介 项目中常用宏的使用方法 页面元素规范 FreeMarker常用技巧
2.静态化 3.搜索引擎优化 ... 静态化 cms ssh lucene 单点登陆 jar包太多,未上传,但全部列出,可自己加入 使用方法:将源码导入myeclipse,然后加入相应jar包(按lib下图片中加入), 然后发布,访问...
struts2+freemarker
NULL 博文链接:https://cdxs2.iteye.com/blog/1923067