`

在SSH2中扩展FreeMarker,页面获取当前时间

 
阅读更多

有一个小需求,需要用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模版

    在这个项目中,"SSH项目 有Freemarker模版" 意味着它采用了Struts2作为MVC框架,Spring作为依赖注入容器和服务层管理,Hibernate作为对象关系映射工具,同时利用了Freemarker作为模板引擎来渲染前端视图。...

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

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

    SSH+Freemarker整合

    SSH+Freemarker 整合是指将Struts2、Spring和Hibernate这三种开源框架与Freemarker模板引擎集成,以实现MVC模式的Web应用程序。下面将详细介绍整合过程中的关键步骤和相关知识点。 1. **引入依赖**: 在进行SSH+...

    SSH freemarker例子学习 拿来就能用 注释全面

    在这个例子中,我们将深入探讨如何在SSH框架中使用FreeMarker模板语言。 FreeMarker是一个强大的、轻量级的模板引擎,它允许开发者将业务逻辑与展示层分离,使得页面设计更加灵活。FreeMarker模板文件通常以`.ftl`...

    freemarker获取数据

    本篇文章将深入探讨如何在Freemarker中获取数据。 一、Freemarker基础 1. 模板语言:Freemarker使用一种简单的文本模板语言,它不包含任何编程语句,只有控制结构(如`if`、`for`)和变量引用。变量通常以`${}`或`...

    SSH框架和FreeMarker动态网页生成静态技术

    在SSH框架中集成FreeMarker,首先需要在项目中添加FreeMarker的依赖库。然后,配置FreeMarker的参数,如模板文件的路径、编码方式等。接下来,创建FreeMarker模板文件,定义页面布局和动态内容。在Struts2的动作类中...

    简单的(ssh2+freemarker)新闻、产品管理系统

    在这个系统中,开发者可能利用SSH2进行后端服务的安全通信和远程操作,而Freemarker则负责渲染和展示新闻和产品信息。"news"这个文件可能包含了新闻管理相关的代码或者模板文件,例如新闻的添加、编辑、删除功能的...

    ssh+FreeMarker静态化网页例子

    ssh+FreeMarker静态化网页例子

    在struts2中使用freemarker模版

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

    SSH最新项目(struts+spring +hibernate+Jbpm+freemarker)

    在这个最新的SSH项目中,结合了Jbpm工作流引擎和FreeMarker模板引擎,使得项目的功能更加强大和完善。 1. **Struts**:Struts 是一个基于MVC设计模式的Web应用框架,主要用于控制应用程序的流程。它通过Action类...

    围绕分页的练习(1)(ssh+freemarker)

    标题“围绕分页的练习(1)(ssh+freemarker)”指的是一个关于使用Spring、Struts和Hibernate(SSH)框架以及Freemarker模板引擎进行分页功能实现的编程练习。SSH是一个流行的企业级Java web应用开发框架,而Freemarker...

    Freemarker分页

    2. **创建Action类**:在Action类中,你需要实现分页逻辑,包括计算总页数、获取当前页的数据等。通常会有一个方法来处理具体的分页请求,比如`getPageContent(int pageNum)`,该方法根据页码查询数据库并返回相应...

    Struts2整合Freemarker生成静态页面

    2. **配置Struts2**:在Struts2的配置文件(通常为struts.xml)中,我们需要配置Freemarker作为视图解析器。通过添加`&lt;constant name="struts.action.extension" value="html"/&gt;`,让Struts2将Action的结果映射到....

    struts2中使用freeMarker

    - 将Action中的属性暴露给FreeMarker模板,通常是通过getter方法,FreeMarker可以访问这些属性并展示在页面上。 4. **结果类型配置**: - 在Action配置中,定义一个结果类型为`dispatcher`的结果,指定对应的...

    使用freemarker扩展struts标签

    扩展Struts2的标签库意味着创建自定义的标签,这些标签可以嵌入到FreeMarker模板中,以提供更高级别的抽象和可重用性。这通常涉及到创建自定义的Action、模型类和标签库定义文件(TLD)。 在给定的文件列表中,我们...

    ssh+ajax+dwr_freemarker

    在SSH框架中,Ajax能够提升用户体验,减少用户等待时间,例如在注册登录过程中,可实时验证用户输入的有效性。 **Direct Web Remoting (DWR)** DWR是一种在浏览器和服务器之间进行远程调用的库,它使得JavaScript...

    freemarker+struts2+在eclipse中创建maven项目

    【标题】"freemarker+struts2+在eclipse中创建maven项目"涉及到的是一个基于Java Web开发的技术组合,主要包括Maven构建工具、Freemarker模板引擎和Struts2框架。以下是对这些技术的详细说明: 1. **Maven**: ...

    利用ssh框架+freemarker做的一个小程序

    标题中的“利用ssh框架+freemarker做的一个小程序”指的是使用Spring、Struts2和Hibernate这三个经典的Java企业级开发框架,结合Freemarker模板引擎构建的一款小型应用程序。SSH框架组合是Java Web开发中广泛采用的...

    围绕分页的练习(2)(ssh+freemarker)

    - 在Struts2 Action类中,通过Hibernate的Session查询数据库,获取指定范围的数据,并计算总记录数。 - 将查询结果、当前页数、总页数等信息封装进JavaBean,然后传递给FreeMarker模板。 5. **前端展示**: - 在...

    可视化div布局 生成freemarker模板

    2. **可视化div布局**:在网页设计中,div元素通常作为容器来组织内容。可视化div布局工具允许用户通过图形化界面拖拽div元素,调整它们的位置和大小,实现页面布局的设计,而无需编写HTML或CSS代码。这种工具提高了...

Global site tag (gtag.js) - Google Analytics