用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模板,首先需要将`freemarker-2.3.8.jar`库文件导入到你的项目的`WEB-INF/lib`...
- FreeMarker模板通常以`.ftl`为扩展名,存储在项目中的`WEB-INF/template`目录下。 - 模板文件包含静态HTML和动态控制结构,如`<#if>`、`<#foreach>`等,用于根据模型数据动态生成内容。 3. **Action与模型数据*...
Struts2是一个流行的Java web框架,它主要用于构建和维护可扩展且易于管理的企业级Web应用程序。而Freemarker则是一个模板引擎,它允许开发者使用模板语言来动态生成HTML、XML等格式的文档。将Struts2与Freemarker...
在实际项目中,Struts2和FreeMarker的结合使用可以有效地构建出可维护、可扩展的Web应用。通过Action类处理业务逻辑,FreeMarker负责生成HTML页面,两者协同工作,为开发者提供了一种高效的开发模式。学习和掌握这两...
Struts2是一个流行的Java Web应用程序框架,它提供了一种组织和控制MVC(模型-视图-控制器)架构的方式。而Freemarker则是一个强大的模板引擎,常用于生成动态HTML、XML或其他格式的文本。在Struts2中结合使用...
总结起来,"spring+hibernate+struts2+freemarker SSH2 新闻发布系统"是一个基础的Java Web项目,展示了SSH2框架组合在实际开发中的应用。开发者可以通过学习这个小例子,理解如何整合这些技术来构建更复杂的Web应用...
在使用FreeMarker和Struts2时,代码生成器可以结合这两者的优势,自动生成符合这两框架规范的代码。例如,对于视图层,代码生成器可以基于FreeMarker模板生成HTML页面;而对于控制器层,可以生成基于Struts2 Action...
Struts2、Spring和Freemarker是Java Web开发中的三个重要框架,它们分别在MVC模式的不同层面提供了功能支持。Struts2是一个基于MVC设计模式的Web应用框架,Spring是一个全面的后端应用程序框架,而Freemarker则是一...
总结一下,使用FreeMarker扩展Struts2标签是提高Web应用开发效率和代码质量的有效手段。通过创建自定义的标签和模型,开发者可以更好地抽象出复杂的业务逻辑,使得视图层更易于管理和维护。在实际项目中,这不仅可以...
3. **插件体系**:Struts2拥有丰富的插件支持,可以方便地扩展其功能,如Struts2-dojo-plugin提供AJAX支持。 4. **配置灵活性**:Struts2的配置可以通过XML或注解实现,使得配置更为灵活和易于理解。 **Freemarker...
通过深入研究这个源码,开发者可以学习到如何有效地使用Struts2、Sitemesh和FreeMarker来构建复杂的Web应用,理解它们的内部工作原理,以及如何优化和扩展这三个组件。这对于提升Java Web开发技能和理解MVC架构有极...
在Struts2中,FreeMarker模板文件通常以`.ftl`为扩展名,用于生成视图层的内容。开发者可以将数据模型(由Action类提供)与模板结合,生成最终的HTML输出。 3. **生成静态页面**:动态生成静态页面是一种优化网站...
Struts2是Apache软件基金会下的一个开源项目,它是基于Model-View-Controller(MVC)设计模式的。它继承了Struts1的优点,并引入了许多新特性,如拦截器、插件架构和更强大的动作映射等,使得Struts2在处理用户请求...
7. **插件(Plugins)**:Struts2有许多内置和第三方插件,如Struts2-dojo-plugin(提供Dojo库的支持),Struts2-json-plugin(支持JSON响应),它们扩展了Struts2的功能。 8. **Action上下文(ActionContext)**:...
8. **`org.apache.struts2.views`**:提供了多种视图展示方式,如Freemarker、JSP或Velocity模板引擎。 #### 四、重要类解析 - **`org.apache.struts2.dispatcher.Dispatcher`**:该类是Struts2的核心组件之一,...
Struts2、FreeMarker和MyBatis是Java Web开发中的三个关键组件,它们共同构建了一个高效、灵活的应用框架。下面将分别对这三个技术进行详细解释,并结合它们在实际项目中的应用进行阐述。 **Struts2** 是一个基于...
3. **插件**:Struts2社区提供了许多插件,如Tiles插件用于布局管理,FreeMarker插件支持使用FreeMarker模板语言,以及Dojo插件用于与Dojo JavaScript库集成。这些插件扩展了Struts2的功能,使得开发者可以快速集成...
1. **源代码**:包含了Struts2框架的Action类、配置文件(如struts.xml)、视图(JSP或FreeMarker模板)以及相关的业务逻辑类。 2. **示例应用**:可能是一个简单的Web应用示例,用于展示如何在实际项目中使用...