`
hhcysn
  • 浏览: 15833 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
社区版块
存档分类
最新评论

struts2下扩展freemarker(代码方式)

阅读更多

用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的子类中,更简便

 

 

 

 

 

分享到:
评论

相关推荐

    Struts2 in action中文版

    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的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,...

    struts项目学习笔记

    基于AOP(面向切面编程)思想的拦截器机制,更易扩展(不修改源代码的条件下,增强代码功能) 更强大、更易用输入校验功能 整合Ajax支持:json插件 Struts2的今生前世: 1.早期开发模型Servlet+JSP+JavaBean显得...

    Struts2 标签库

    Struts2标签库提供了主题、模板支持,极大地简化了视图页面的编写,而且,struts2的主题、模板都提供了很好的扩展性。实现了更好的代码复用。Struts2允许在页面中使用自定义组件,这完全能满足项目中页面显示复杂,...

    深入浅出Struts2(附源码)

    作者处处从实战出发,在丰富的示例中直观地探讨了许多实用的技术,如数据类型转换、文件上传和下载、提高Struts 2应用的安全性、调试与性能分析、FreeMarker、Velocity、Ajax,等等。跟随作者一道深入Struts 2,聆听...

    深入浅出Struts 2 .pdf(原书扫描版) part 1

    如数据类型转换、文件上传和下载、Struts2应用的安全性、调试与性能分析、FreeMarker、Velocily、Ajax,等等。跟随作者一道深入Struts2。聆听大量来之不易的经验之谈。你对Struts2开发框架的理解和应用水平都将更上...

    Java Web程序设计教程

    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...

    MyEclipse_9创建SSH2开发环境必须的独立包

    freemarker-2.3.8.jar 表现层框架,定义了struts2的可视组件主题 commons-beanutils.jar 提供对java 反射和自省API的包装 commons-fileupload.jar 文件上传 commons-io.jar 输入输出,支持文件上传 commons-logging....

    OA办公自动化系统-权限管理系统(JAVA)

    采用Struts、Hibernate、Spring、Freemarker、dwr、JQuery、JBPM等技术,该项目目前开放的不是所有源代码,只是给大家提供了权限管理中的全部源码及设计文档,如果有想要全部源码者,可以留言。 其中包括权限管理的...

    JFinal(JAVA 极速WEB ORM框架 ) v3.2.zip

    JFinal 是基于 Java 语言的极速 WEB ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python等动态语言的开发效率!为您...

    jfinal demo 3.2

    jfinal demo 3.2 , 学习开发当然要多看代码,jfinal 最新源码。MVC架构,设计精巧,使用简单 遵循COC原则,零配置,无xml 独创Db + Record模式,灵活便利 ...功能齐全,拥有struts2的绝大部分功能 体积小仅538K

    JAVA上百实例源码以及开源项目源代码

     Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...

    JFinal 是基于 Java 语言的极速 WEB + ORM 框架,.rar

    JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!...

    亿美内容管理系统 ExmayCMS v1.1.6 Beta

    ExmayCMS采用Struts2+Spring+Hibernate+Lucene3+EhCache+Freemarker+JQuery等主流技术架构,默认使用MySQL数据库,并支持Oracle、SqlServer、Sybase、DB2等主流数据库,全部源代码永久开放,无任何功能限制。...

    jfinal-1.5

    JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!...

    Java极速开发JFinal

    JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。 在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率...

Global site tag (gtag.js) - Google Analytics