`
hhcysn
  • 浏览: 16216 次
  • 性别: 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中使用freemarker模版

    在Struts2中集成FreeMarker,可以方便地将业务逻辑和视图层分离,提高代码的可维护性和可扩展性。 要开始在Struts2中使用FreeMarker模板,首先需要将`freemarker-2.3.8.jar`库文件导入到你的项目的`WEB-INF/lib`...

    struts2中使用freeMarker

    - FreeMarker模板通常以`.ftl`为扩展名,存储在项目中的`WEB-INF/template`目录下。 - 模板文件包含静态HTML和动态控制结构,如`&lt;#if&gt;`、`&lt;#foreach&gt;`等,用于根据模型数据动态生成内容。 3. **Action与模型数据*...

    Struts2整合Freemarker生成静态页面

    Struts2是一个流行的Java web框架,它主要用于构建和维护可扩展且易于管理的企业级Web应用程序。而Freemarker则是一个模板引擎,它允许开发者使用模板语言来动态生成HTML、XML等格式的文档。将Struts2与Freemarker...

    struts2-freemarker

    在实际项目中,Struts2和FreeMarker的结合使用可以有效地构建出可维护、可扩展的Web应用。通过Action类处理业务逻辑,FreeMarker负责生成HTML页面,两者协同工作,为开发者提供了一种高效的开发模式。学习和掌握这两...

    Struts2与Freemarker生成xml文本详细步骤

    Struts2是一个流行的Java Web应用程序框架,它提供了一种组织和控制MVC(模型-视图-控制器)架构的方式。而Freemarker则是一个强大的模板引擎,常用于生成动态HTML、XML或其他格式的文本。在Struts2中结合使用...

    spring+hibernate+struts2+freemarker SSH2 新闻发布系统

    总结起来,"spring+hibernate+struts2+freemarker SSH2 新闻发布系统"是一个基础的Java Web项目,展示了SSH2框架组合在实际开发中的应用。开发者可以通过学习这个小例子,理解如何整合这些技术来构建更复杂的Web应用...

    FreeMarker,Struts2,代码生成器

    在使用FreeMarker和Struts2时,代码生成器可以结合这两者的优势,自动生成符合这两框架规范的代码。例如,对于视图层,代码生成器可以基于FreeMarker模板生成HTML页面;而对于控制器层,可以生成基于Struts2 Action...

    Struts2、Spring、Freemarker自定义标签

    Struts2、Spring和Freemarker是Java Web开发中的三个重要框架,它们分别在MVC模式的不同层面提供了功能支持。Struts2是一个基于MVC设计模式的Web应用框架,Spring是一个全面的后端应用程序框架,而Freemarker则是一...

    使用freemarker扩展struts标签

    总结一下,使用FreeMarker扩展Struts2标签是提高Web应用开发效率和代码质量的有效手段。通过创建自定义的标签和模型,开发者可以更好地抽象出复杂的业务逻辑,使得视图层更易于管理和维护。在实际项目中,这不仅可以...

    struts2 freemarker

    3. **插件体系**:Struts2拥有丰富的插件支持,可以方便地扩展其功能,如Struts2-dojo-plugin提供AJAX支持。 4. **配置灵活性**:Struts2的配置可以通过XML或注解实现,使得配置更为灵活和易于理解。 **Freemarker...

    struts2sitemesh-freemarker 源码

    通过深入研究这个源码,开发者可以学习到如何有效地使用Struts2、Sitemesh和FreeMarker来构建复杂的Web应用,理解它们的内部工作原理,以及如何优化和扩展这三个组件。这对于提升Java Web开发技能和理解MVC架构有极...

    struts2+freemarker 生成静态页面

    在Struts2中,FreeMarker模板文件通常以`.ftl`为扩展名,用于生成视图层的内容。开发者可以将数据模型(由Action类提供)与模板结合,生成最终的HTML输出。 3. **生成静态页面**:动态生成静态页面是一种优化网站...

    Struts2项目代码

    Struts2是Apache软件基金会下的一个开源项目,它是基于Model-View-Controller(MVC)设计模式的。它继承了Struts1的优点,并引入了许多新特性,如拦截器、插件架构和更强大的动作映射等,使得Struts2在处理用户请求...

    Struts2的视频学习代码

    7. **插件(Plugins)**:Struts2有许多内置和第三方插件,如Struts2-dojo-plugin(提供Dojo库的支持),Struts2-json-plugin(支持JSON响应),它们扩展了Struts2的功能。 8. **Action上下文(ActionContext)**:...

    struts2源代码分析

    8. **`org.apache.struts2.views`**:提供了多种视图展示方式,如Freemarker、JSP或Velocity模板引擎。 #### 四、重要类解析 - **`org.apache.struts2.dispatcher.Dispatcher`**:该类是Struts2的核心组件之一,...

    Struts2 FreeMarker myBatis

    Struts2、FreeMarker和MyBatis是Java Web开发中的三个关键组件,它们共同构建了一个高效、灵活的应用框架。下面将分别对这三个技术进行详细解释,并结合它们在实际项目中的应用进行阐述。 **Struts2** 是一个基于...

    struts2的一些扩展用法

    3. **插件**:Struts2社区提供了许多插件,如Tiles插件用于布局管理,FreeMarker插件支持使用FreeMarker模板语言,以及Dojo插件用于与Dojo JavaScript库集成。这些插件扩展了Struts2的功能,使得开发者可以快速集成...

    struts2开源代码

    1. **源代码**:包含了Struts2框架的Action类、配置文件(如struts.xml)、视图(JSP或FreeMarker模板)以及相关的业务逻辑类。 2. **示例应用**:可能是一个简单的Web应用示例,用于展示如何在实际项目中使用...

Global site tag (gtag.js) - Google Analytics