用FreeMarker直接在页面上获取当前时间,直接扩展FreeMarker的方法来实现。使用扩展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" />
三、编写一个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());
六、接口的实现类可以以内部类形式放在FreemarkerManager的子类中,更简便
分享到:
相关推荐
3.5.3 Struts 2公文包示例代码研究 58 3.6 小结 60 第4章 使用拦截器追加工作流 61 4.1 为什么要拦截请求 61 4.1.1 清理MVC 61 4.1.2 从拦截器受益 63 4.1.3 开发拦截器 64 4.2 拦截器的工作原理 64 4.2.1 总指挥...
Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,...
基于AOP(面向切面编程)思想的拦截器机制,更易扩展(不修改源代码的条件下,增强代码功能) 更强大、更易用输入校验功能 整合Ajax支持:json插件 Struts2的今生前世: 1.早期开发模型Servlet+JSP+JavaBean显得...
Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,...
作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...
如数据类型转换、文件上传和下载、Struts2应用的安全性、调试与性能分析、FreeMarker、Velocily、Ajax,等等。跟随作者一道深入Struts2。聆听大量来之不易的经验之谈。你对Struts2开发框架的理解和应用水平都将更上...
14.1.1struts2应用的扩展方式 277 14.1.2spring插件的应用 278 14.2spring和hibernate的整合 279 14.2.1spring对hibernate的支持 279 14.2.2管理sessionfactory 279 14.2.3hibernate的dao实现 281 14.2.4使用...
框架将各个零散的框架(struts,strust2,springmvc,hibernate,ibatis,spring_jdbc,flex)搭建好,并内置一个代码生成器,辅助项目开发,可以生成java的hibernat model,dao,manager,struts+struts2 action类,可以生成jsp...
freemarker-2.3.8.jar 表现层框架,定义了struts2的可视组件主题 commons-beanutils.jar 提供对java 反射和自省API的包装 commons-fileupload.jar 文件上传 commons-io.jar 输入输出,支持文件上传 commons-logging....
采用Struts、Hibernate、Spring、Freemarker、dwr、JQuery、JBPM等技术,该项目目前开放的不是所有源代码,只是给大家提供了权限管理中的全部源码及设计文档,如果有想要全部源码者,可以留言。 其中包括权限管理的...
JFinal 是基于 Java 语言的极速 WEB ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python等动态语言的开发效率!为您...
jfinal demo 3.2 , 学习开发当然要多看代码,jfinal 最新源码。MVC架构,设计精巧,使用简单 遵循COC原则,零配置,无xml 独创Db + Record模式,灵活便利 ...功能齐全,拥有struts2的绝大部分功能 体积小仅538K
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!...
ExmayCMS采用Struts2+Spring+Hibernate+Lucene3+EhCache+Freemarker+JQuery等主流技术架构,默认使用MySQL数据库,并支持Oracle、SqlServer、Sybase、DB2等主流数据库,全部源代码永久开放,无任何功能限制。...
JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!...
JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。 在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率...