`
kaowww153
  • 浏览: 74530 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
文章分类
社区版块
存档分类
最新评论

为struts2添加freemarker的自定义方法

阅读更多

案例:在freemarker中直接比较两个时间
设定当前时间(在页面直接用${datetime("yyyy")}取得当前时间):

/**
 *类说明
 *@author ^_^
 *@version 1.0 创建时间: May 22, 2010 11:24:27 AM
 **/
public class DatetimeFreemarkerModel implements TemplateMethodModel {

	private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss";   
	/**  
	 * 根据传入的日期时间格式,在页面上直接取得当前时间的格式化结果  
	 * 如果格式为空或者错误,将返回yyyy-MM-dd HH:mm:ss  
	 * 页面调用${datetime("yyyy")}/${datetime('yyyy')}  
	 * @see com.yourcompany.ExtendedFreemarkerManager#createConfiguration  
	 *  
	 */  
    @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);   
        }   
    }   


}

 然后比较两个时间的model:

 

/**
 *类说明
 *@author ^_^
 *@version 1.0 创建时间: May 22, 2010 11:14:44 AM
 **/
 **/public class Compare2DateFreemarkerModel implements TemplateMethodModel {
	@SuppressWarnings("unchecked") 
	public Object exec(List list) throws TemplateModelException {
	        if (list == null || list.size() != 2) {
	            throw new TemplateModelException("请输入两个日期");
	        }
	        Object timeOne = list.get(0);
	        Object timeTwo = list.get(1);
	        Date dateOne;
	        Date dateTwo;
	        if (timeOne instanceof String) {
	            dateOne = DateUtil.getDateFromString(timeOne.toString());
	        } else {
	            dateOne = (Date) timeOne;
	        }
	        if (timeTwo instanceof String) {
	        	dateTwo = DateUtil.getDateFromString(timeTwo.toString());
	        } else {
	        	dateTwo = (Date) timeOne;
	        }
	        if(dateOne.getTime()-dateTwo.getTime()>=0){
	        	return true;
	        }else{
	        	return false;
	        } 
	 }
}

 加入模板

/**
 *类说明
 *@author ^_^
 *@version 1.0 创建时间: May 22, 2010 11:18:44 AM
 **/
public class ExtendedFreemarkerManager extends FreemarkerManager  {
	@Override
	protected Configuration createConfiguration(ServletContext servletContext)
		throws TemplateException {
		Configuration configuration = super.createConfiguration(servletContext);
		//获得当前时间
		configuration.setSharedVariable("dateTime", new DatetimeFreemarkerModel() );
		//是否大于后者时间
		configuration.setSharedVariable("isGltDate", new Compare2DateFreemarkerModel());
		return configuration;
	}
}

 然后在struts.xml里添加

<constant name="struts.freemarker.manager.classname"  value="com.hongwei.domi.util.ExtendedFreemarkerManager" />  

 

最后在页面进行比较:

<#if isGltDate(dateTime("yyyy-MM-dd HH:mm"),endTime?string("yyyy-MM-dd HH:mm"))>
						<span class="red12">您计较的报告超时了</span>
						<#else>

 

 

分享到:
评论

相关推荐

    Struts2 与Freemarker 的配置方法

    同时,为在Freemarker中使用Struts2标签,需要添加特定的servlet配置。 5. **配置Struts2**: - 创建struts.xml配置文件,定义Action和结果。例如,创建一个名为"userLogin"的Action,指定其执行的类和方法,然后...

    struts2和freemarker整合

    1. **添加依赖**:在项目中添加FreeMarker和Struts2 FreeMarker插件的依赖。 2. **配置Struts2**:在`struts.xml`配置文件中指定FreeMarker作为视图解析器。 3. **模板目录**:设置项目中的FreeMarker模板文件存放...

    Struts2+FreeMarker部署

    1. **配置依赖**:在项目的`pom.xml`或`build.gradle`文件中,添加FreeMarker的依赖库。 2. **配置Struts2**:在`struts.xml`配置文件中,指定使用FreeMarker作为视图解析器。例如: ```xml &lt;constant name="...

    Struts2与FreeMarker模板

    ### Struts2与FreeMarker模板 #### Struts2简介 Struts2是Apache软件基金会的一个开源项目,它是一个用于开发Java EE应用程序的MVC(Model-View-Controller)框架。Struts2继承了Struts1的优点,并在此基础上进行...

    struts2.0整合freemarker

    2. **配置Struts2**:在struts.xml文件中配置Struts2的核心过滤器,并设置Freemarker为默认的视图解析器。例如: ```xml &lt;filter-name&gt;struts2 &lt;filter-class&gt;org.apache.struts2.dispatcher.ng.filter....

    struts2自定义结果类型demo

    在Struts2中,结果类型(Result Type)是动作执行后处理结果的关键部分,它决定了如何将控制权转移给下一个资源,如JSP、FreeMarker模板或者重定向到其他URL。自定义结果类型允许开发者根据项目需求定制化结果处理...

    Struts2_自定义标签的方法

    本文将深入探讨如何在Struts2中创建自定义标签,特别是基于`UITag`的实现方法,以及其背后的原理和步骤。 #### 二、Struts2自定义标签的构成 Struts2的自定义`UITag`由三部分组成: 1. **UIBean**:用于定义标签...

    freemarker项目(从入门到与struts2结合)

    3. **结果拦截器**:Struts2允许使用拦截器来处理Action的执行前后,可以自定义拦截器来实现数据预处理或后处理,以适应FreeMarker模板的需求。 4. **动态方法调用**:FreeMarker支持Struts2的动态方法调用,这意味...

    struts1.x整合freemarker

    - **配置Freemarker**: 首先,在Struts1.x的配置文件(struts-config.xml)中添加Freemarker的配置,包括模板目录设置、编码设置等。 - **Action类改造**: 将原本在JSP中使用的EL表达式和JSTL标签替换为Freemarker...

    struts2jar.zip

    Struts2是一个强大的Java web应用程序框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性、可扩展性良好的企业级应用的工具。这个"struts2jar.zip"压缩包包含了Struts2学习和研究的基础...

    struts2 学习重点笔记

    - **原理**:Struts2 的拦截器会在 Action 执行完成后,调用 getter 方法并将结果存储到适当的范围对象中。 **3.4 请求转发与重定向** - **转发**:Action 的 execute 方法返回一个字符串,根据这个字符串找到对应...

    struts2所需的jar包

    Struts2还允许自定义拦截器和结果类型,以扩展其功能。 总的来说,理解并正确使用Struts2所需的jar包对于开发基于Struts2的Web应用程序至关重要。它们构成了Struts2框架的基础,使得开发者能够高效地构建出结构清晰...

    struts2讲义 struts2讲义struts2讲义struts2讲义struts2讲义

    ### Struts2讲义知识点概览 #### 一、Struts2的历史与发展 - **Struts框架的发展历程**: - Struts最初版本发布于2000年,是Java Web开发领域的一个重要里程碑。 - 随着时间的发展和技术的进步,Struts逐渐暴露...

    Struts2+Freemark

    6. 在Struts2的拦截器链中添加自定义拦截器,实现特定功能,如登录验证。 7. 测试应用,确保请求能正确路由到Action,FreeMarker模板能正确渲染数据。 在实际开发中,这种组合提供了良好的分离关注点,让开发者可以...

    Struts2静态页面生成

    1. **配置Struts2**:首先,需要在Struts2的配置文件中(通常为struts.xml)添加相关的配置,声明FreeMarker作为视图解析器,并指定FreeMarker的配置文件路径。 2. **创建FreeMarker模板**:在项目资源目录下创建一...

    struts1和struts2的jar包

    Struts是Apache软件基金会下的一个开源项目,主要提供MVC(Model-View-Controller...尽管Struts2在许多方面进行了改进,但Struts1仍有许多项目在使用,理解这两个框架的差异和使用方法对于Java Web开发者来说非常重要。

    struts2 fielderror去掉样式

    2. **配置Struts2**:在`struts.xml`配置文件中,指定你的自定义模板为默认的`fielderror`模板。例如: ```xml &lt;result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"&gt; ...

    Struts2 in action(struts2实战)

    - **注解配置**:Struts2也支持使用Java注解来简化配置,直接在Action类或方法上添加注解即可。 3. **Action与Result**: - Action通过`execute()`方法响应请求,开发者可以自定义其他方法来处理特定的业务逻辑。...

    Struts2源码分析

    视图呈现可以通过FreeMarker、JSP或Velocity等模板技术实现,对应的包分别是`org.apache.struts2.views.freemarker`、`org.apache.struts2.views.jsp`和`org.apache.struts2.views.velocity`。 配置相关的类位于`...

    Struts2课堂学习总结

    `&lt;action&gt;`标签中的`execute()`方法是Action的基本入口点,如果没有自定义Action类,Struts2将调用默认实现。 8. **动态方法访问**:Struts2支持动态方法调用,允许Action方法名与请求参数相关联,增强了灵活性。 ...

Global site tag (gtag.js) - Google Analytics