案例:在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>
分享到:
相关推荐
同时,为在Freemarker中使用Struts2标签,需要添加特定的servlet配置。 5. **配置Struts2**: - 创建struts.xml配置文件,定义Action和结果。例如,创建一个名为"userLogin"的Action,指定其执行的类和方法,然后...
1. **添加依赖**:在项目中添加FreeMarker和Struts2 FreeMarker插件的依赖。 2. **配置Struts2**:在`struts.xml`配置文件中指定FreeMarker作为视图解析器。 3. **模板目录**:设置项目中的FreeMarker模板文件存放...
1. **配置依赖**:在项目的`pom.xml`或`build.gradle`文件中,添加FreeMarker的依赖库。 2. **配置Struts2**:在`struts.xml`配置文件中,指定使用FreeMarker作为视图解析器。例如: ```xml <constant name="...
### Struts2与FreeMarker模板 #### Struts2简介 Struts2是Apache软件基金会的一个开源项目,它是一个用于开发Java EE应用程序的MVC(Model-View-Controller)框架。Struts2继承了Struts1的优点,并在此基础上进行...
2. **配置Struts2**:在struts.xml文件中配置Struts2的核心过滤器,并设置Freemarker为默认的视图解析器。例如: ```xml <filter-name>struts2 <filter-class>org.apache.struts2.dispatcher.ng.filter....
在Struts2中,结果类型(Result Type)是动作执行后处理结果的关键部分,它决定了如何将控制权转移给下一个资源,如JSP、FreeMarker模板或者重定向到其他URL。自定义结果类型允许开发者根据项目需求定制化结果处理...
本文将深入探讨如何在Struts2中创建自定义标签,特别是基于`UITag`的实现方法,以及其背后的原理和步骤。 #### 二、Struts2自定义标签的构成 Struts2的自定义`UITag`由三部分组成: 1. **UIBean**:用于定义标签...
3. **结果拦截器**:Struts2允许使用拦截器来处理Action的执行前后,可以自定义拦截器来实现数据预处理或后处理,以适应FreeMarker模板的需求。 4. **动态方法调用**:FreeMarker支持Struts2的动态方法调用,这意味...
- **配置Freemarker**: 首先,在Struts1.x的配置文件(struts-config.xml)中添加Freemarker的配置,包括模板目录设置、编码设置等。 - **Action类改造**: 将原本在JSP中使用的EL表达式和JSTL标签替换为Freemarker...
Struts2是一个强大的Java web应用程序框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性、可扩展性良好的企业级应用的工具。这个"struts2jar.zip"压缩包包含了Struts2学习和研究的基础...
- **原理**:Struts2 的拦截器会在 Action 执行完成后,调用 getter 方法并将结果存储到适当的范围对象中。 **3.4 请求转发与重定向** - **转发**:Action 的 execute 方法返回一个字符串,根据这个字符串找到对应...
Struts2还允许自定义拦截器和结果类型,以扩展其功能。 总的来说,理解并正确使用Struts2所需的jar包对于开发基于Struts2的Web应用程序至关重要。它们构成了Struts2框架的基础,使得开发者能够高效地构建出结构清晰...
### Struts2讲义知识点概览 #### 一、Struts2的历史与发展 - **Struts框架的发展历程**: - Struts最初版本发布于2000年,是Java Web开发领域的一个重要里程碑。 - 随着时间的发展和技术的进步,Struts逐渐暴露...
6. 在Struts2的拦截器链中添加自定义拦截器,实现特定功能,如登录验证。 7. 测试应用,确保请求能正确路由到Action,FreeMarker模板能正确渲染数据。 在实际开发中,这种组合提供了良好的分离关注点,让开发者可以...
1. **配置Struts2**:首先,需要在Struts2的配置文件中(通常为struts.xml)添加相关的配置,声明FreeMarker作为视图解析器,并指定FreeMarker的配置文件路径。 2. **创建FreeMarker模板**:在项目资源目录下创建一...
Struts是Apache软件基金会下的一个开源项目,主要提供MVC(Model-View-Controller...尽管Struts2在许多方面进行了改进,但Struts1仍有许多项目在使用,理解这两个框架的差异和使用方法对于Java Web开发者来说非常重要。
2. **配置Struts2**:在`struts.xml`配置文件中,指定你的自定义模板为默认的`fielderror`模板。例如: ```xml <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"> ...
- **注解配置**:Struts2也支持使用Java注解来简化配置,直接在Action类或方法上添加注解即可。 3. **Action与Result**: - Action通过`execute()`方法响应请求,开发者可以自定义其他方法来处理特定的业务逻辑。...
视图呈现可以通过FreeMarker、JSP或Velocity等模板技术实现,对应的包分别是`org.apache.struts2.views.freemarker`、`org.apache.struts2.views.jsp`和`org.apache.struts2.views.velocity`。 配置相关的类位于`...
`<action>`标签中的`execute()`方法是Action的基本入口点,如果没有自定义Action类,Struts2将调用默认实现。 8. **动态方法访问**:Struts2支持动态方法调用,允许Action方法名与请求参数相关联,增强了灵活性。 ...