有一个小需求,需要用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" />
三、编写一个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());
分享到:
相关推荐
在这个项目中,"SSH项目 有Freemarker模版" 意味着它采用了Struts2作为MVC框架,Spring作为依赖注入容器和服务层管理,Hibernate作为对象关系映射工具,同时利用了Freemarker作为模板引擎来渲染前端视图。...
总结起来,"spring+hibernate+struts2+freemarker SSH2 新闻发布系统"是一个基础的Java Web项目,展示了SSH2框架组合在实际开发中的应用。开发者可以通过学习这个小例子,理解如何整合这些技术来构建更复杂的Web应用...
SSH+Freemarker 整合是指将Struts2、Spring和Hibernate这三种开源框架与Freemarker模板引擎集成,以实现MVC模式的Web应用程序。下面将详细介绍整合过程中的关键步骤和相关知识点。 1. **引入依赖**: 在进行SSH+...
在这个例子中,我们将深入探讨如何在SSH框架中使用FreeMarker模板语言。 FreeMarker是一个强大的、轻量级的模板引擎,它允许开发者将业务逻辑与展示层分离,使得页面设计更加灵活。FreeMarker模板文件通常以`.ftl`...
本篇文章将深入探讨如何在Freemarker中获取数据。 一、Freemarker基础 1. 模板语言:Freemarker使用一种简单的文本模板语言,它不包含任何编程语句,只有控制结构(如`if`、`for`)和变量引用。变量通常以`${}`或`...
在SSH框架中集成FreeMarker,首先需要在项目中添加FreeMarker的依赖库。然后,配置FreeMarker的参数,如模板文件的路径、编码方式等。接下来,创建FreeMarker模板文件,定义页面布局和动态内容。在Struts2的动作类中...
在这个系统中,开发者可能利用SSH2进行后端服务的安全通信和远程操作,而Freemarker则负责渲染和展示新闻和产品信息。"news"这个文件可能包含了新闻管理相关的代码或者模板文件,例如新闻的添加、编辑、删除功能的...
ssh+FreeMarker静态化网页例子
在Struts2中集成FreeMarker,可以方便地将业务逻辑和视图层分离,提高代码的可维护性和可扩展性。 要开始在Struts2中使用FreeMarker模板,首先需要将`freemarker-2.3.8.jar`库文件导入到你的项目的`WEB-INF/lib`...
在这个最新的SSH项目中,结合了Jbpm工作流引擎和FreeMarker模板引擎,使得项目的功能更加强大和完善。 1. **Struts**:Struts 是一个基于MVC设计模式的Web应用框架,主要用于控制应用程序的流程。它通过Action类...
标题“围绕分页的练习(1)(ssh+freemarker)”指的是一个关于使用Spring、Struts和Hibernate(SSH)框架以及Freemarker模板引擎进行分页功能实现的编程练习。SSH是一个流行的企业级Java web应用开发框架,而Freemarker...
2. **创建Action类**:在Action类中,你需要实现分页逻辑,包括计算总页数、获取当前页的数据等。通常会有一个方法来处理具体的分页请求,比如`getPageContent(int pageNum)`,该方法根据页码查询数据库并返回相应...
2. **配置Struts2**:在Struts2的配置文件(通常为struts.xml)中,我们需要配置Freemarker作为视图解析器。通过添加`<constant name="struts.action.extension" value="html"/>`,让Struts2将Action的结果映射到....
- 将Action中的属性暴露给FreeMarker模板,通常是通过getter方法,FreeMarker可以访问这些属性并展示在页面上。 4. **结果类型配置**: - 在Action配置中,定义一个结果类型为`dispatcher`的结果,指定对应的...
扩展Struts2的标签库意味着创建自定义的标签,这些标签可以嵌入到FreeMarker模板中,以提供更高级别的抽象和可重用性。这通常涉及到创建自定义的Action、模型类和标签库定义文件(TLD)。 在给定的文件列表中,我们...
在SSH框架中,Ajax能够提升用户体验,减少用户等待时间,例如在注册登录过程中,可实时验证用户输入的有效性。 **Direct Web Remoting (DWR)** DWR是一种在浏览器和服务器之间进行远程调用的库,它使得JavaScript...
【标题】"freemarker+struts2+在eclipse中创建maven项目"涉及到的是一个基于Java Web开发的技术组合,主要包括Maven构建工具、Freemarker模板引擎和Struts2框架。以下是对这些技术的详细说明: 1. **Maven**: ...
标题中的“利用ssh框架+freemarker做的一个小程序”指的是使用Spring、Struts2和Hibernate这三个经典的Java企业级开发框架,结合Freemarker模板引擎构建的一款小型应用程序。SSH框架组合是Java Web开发中广泛采用的...
- 在Struts2 Action类中,通过Hibernate的Session查询数据库,获取指定范围的数据,并计算总记录数。 - 将查询结果、当前页数、总页数等信息封装进JavaBean,然后传递给FreeMarker模板。 5. **前端展示**: - 在...
2. **可视化div布局**:在网页设计中,div元素通常作为容器来组织内容。可视化div布局工具允许用户通过图形化界面拖拽div元素,调整它们的位置和大小,实现页面布局的设计,而无需编写HTML或CSS代码。这种工具提高了...