- 浏览: 117832 次
- 性别:
- 来自: 长沙
最新评论
-
leecyz:
不可分页全选
脚本实现全选GridView中的CheckBox -
agameplay:
呵呵,感谢,一直不知道会员定期过期检测,这下有法了,以前以为T ...
net中的定时器 -
raisun_1988:
yining159 写道这个跟.net有什么关系。。。
web ...
asp.net 页面弹出层,背景变灰不能操作 -
yining159:
这个跟.net有什么关系。。。
asp.net 页面弹出层,背景变灰不能操作 -
wm1688:
very good需要说明一下的是 在mymetadata文件 ...
Myeclipse中复制项目的注意事项
最近项目中有这样的需求,需要将普通的时间格式转行成时间间隔模式,如:将2009-07-01 10:16:14这种格式变成:昨天21:45:26 格式,我思前想后,为了显示的需要还是自定义个标签较合理。现将方法跟大家分享,算法不重要,重要的是自定义标签的流程。
我们分二步走
1.编写自定义标签类。
2. 创建taglib文件(.tld),编写标签声明。
第一步:
首先编写时间格式转换的方法:
- public static String getDisplayTime(Date date){
- Date nowDate=new Date();
- Calendar oldCalendar=Calendar.getInstance();
- Calendar nowCalendar=Calendar.getInstance();
- oldCalendar.setTime(date);
- nowCalendar.setTime(nowDate);
- int day=getDaysBetween(oldCalendar,nowCalendar);
- Long nowTime=nowDate.getTime();
- Long oldTime=date.getTime();
- Long time=nowTime-oldTime;
- if(time>60*60*1000){
- if(day==0){
- return new SimpleDateFormat("HH:mm:ss").format(date);
- }else if(day==1){
- return "昨天"+new SimpleDateFormat("HH:mm:ss").format(date);
- }else if(day==2){
- return "前天"+new SimpleDateFormat("HH:mm:ss").format(date);
- }else{
- return new SimpleDateFormat("yyyy-MM-dd").format(date);
- }
- }else if(time<60*1000){
- return "刚刚";
- }else{
- return (long)time/(60*1000)+"分钟前";
- }
- }
public static String getDisplayTime(Date date){ Date nowDate=new Date(); Calendar oldCalendar=Calendar.getInstance(); Calendar nowCalendar=Calendar.getInstance(); oldCalendar.setTime(date); nowCalendar.setTime(nowDate); int day=getDaysBetween(oldCalendar,nowCalendar); Long nowTime=nowDate.getTime(); Long oldTime=date.getTime(); Long time=nowTime-oldTime; if(time>60*60*1000){ if(day==0){ return new SimpleDateFormat("HH:mm:ss").format(date); }else if(day==1){ return "昨天"+new SimpleDateFormat("HH:mm:ss").format(date); }else if(day==2){ return "前天"+new SimpleDateFormat("HH:mm:ss").format(date); }else{ return new SimpleDateFormat("yyyy-MM-dd").format(date); } }else if(time<60*1000){ return "刚刚"; }else{ return (long)time/(60*1000)+"分钟前"; } }
这段代码很简单,相信大家一看便懂了。
下面是距离当前时间天数的方法:
- public class Times extends Component{
- private String name;
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public Times(ValueStack arg0) {
- super(arg0);
- }
- @Override
- public boolean start(Writer writer) {
- boolean result = super.start(writer);
- try {
- java.util.Date date = (java.util.Date) findValue(name);
- String str=DataTime.getDisplayTime(date);
- writer.write(str);
- } catch (IOException ex) {
- Logger.getLogger(Pages.class.getName()).log(Level.SEVERE, null, ex);
- }
- return result;
- }
- }
public class Times extends Component{ private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } public Times(ValueStack arg0) { super(arg0); } @Override public boolean start(Writer writer) { boolean result = super.start(writer); try { java.util.Date date = (java.util.Date) findValue(name); String str=DataTime.getDisplayTime(date); writer.write(str); } catch (IOException ex) { Logger.getLogger(Pages.class.getName()).log(Level.SEVERE, null, ex); } return result; } }
这里是写一个方法调用这个算法返回一个值
- public class TimeTag extends ComponentTagSupport{
- private String name;
- public void setName(String name) {
- this.name = name;
- }
- @Override
- public Component getBean(ValueStack arg0, HttpServletRequest arg1, HttpServletResponse arg2) {
- return new Times(arg0);
- }
- //获得参数
- protected void populateParams() {
- super.populateParams();
- Times pages = (Times)component;
- pages.setName(name);
- }
- }
public class TimeTag extends ComponentTagSupport{ private String name; public void setName(String name) { this.name = name; } @Override public Component getBean(ValueStack arg0, HttpServletRequest arg1, HttpServletResponse arg2) { return new Times(arg0); } //获得参数 protected void populateParams() { super.populateParams(); Times pages = (Times)component; pages.setName(name); } }
这里继承ComponentTagSupport类是为了获得标签中的属性值,并包装成Component对象。继承Component类是为了从Struts2中的ValueStack中获得相对应的值。
第二步:建立smallfish.tld
- <?xml version="1.0" encoding="UTF-8"?>
- <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
- <taglib>
- <tlib-version>2.2.3</tlib-version>
- <jsp-version>1.2</jsp-version>
- <short-name>smallfish</short-name>
- <uri>/jzy</uri>
- <display-name>"smallfish Tags"</display-name>
- <tag>
- <name>times</name>
- <tag-class>com.common.tag.TimeTag</tag-class>
- <body-content>empty</body-content>
- <attribute>
- <name>name</name>
- <required>true</required>
- <rtexprvalue>true</rtexprvalue>
- </attribute>
- </tag>
- </taglib>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd"> <taglib> <tlib-version>2.2.3</tlib-version> <jsp-version>1.2</jsp-version> <short-name>smallfish</short-name> <uri>/jzy</uri> <display-name>"smallfish Tags"</display-name> <tag> <name>times</name> <tag-class>com.common.tag.TimeTag</tag-class> <body-content>empty</body-content> <attribute> <name>name</name> <required>true</required> <rtexprvalue>true</rtexprvalue> </attribute> </tag> </taglib>
经过这些操作后,一个自己的标签就弄好了,tld文件可以扩充,在用的时候就像Struts2自带的标签一样,导入,页面显示时就用<smallfish:times name="time" />这样就可以了。是不是很简单呢。
学java和asp.net的朋友-免费的浪曦java视频和asp.net视频下载.
是全套的完整的。http://www.itpob.cn/thread-196-1-1.html
有需要的可以去下。
发表评论
-
JavaScript的语法
2010-03-28 19:06 7641. JavaScript的语法 - 区分大小写 - 弱类 ... -
JavaScript的起源
2010-03-28 18:58 7931.JavaScript的起源 - 1992年,Nombas ... -
Flex学习笔记__02
2010-03-18 14:23 8021. 下载Flex Adobe官方网站(http://w ... -
Flex学习笔记__01
2010-03-18 14:11 7021. Flex简介 1.1 什么是Flex Flex是一 ... -
tomcat集群和负载均衡的实现(session同步)
2010-03-15 14:24 653(一)环境说明 (1)服务器 ... -
DWR教程
2010-01-28 10:09 904这段时间较闲,研究了一番dwr.发现dwr实现的AJAX有些地 ... -
Myeclipse中复制项目的注意事项
2010-01-28 10:08 1698在项目上点右键,properties -> MyEcli ... -
struts2利用<s:fielderror/>等标签详细地控制错误消息输出格式
2010-01-28 10:07 1552<s:if test="hasFieldE ... -
MyEclipse不能启动?
2010-01-28 10:05 1372刚才群里有位朋友安装MyEclipse6.01 all in ... -
log4j:WARN Please initialize the log4j system properly 问题解决
2010-01-28 10:03 1378log4j:WARN No appenders could b ... -
使用Struts时遇到的问题
2010-01-25 17:19 600以下是本人初次使用Struts时遇到的问题:1.Tomcat启 ... -
mysql 1242 subquery returns more than 1 row
2010-01-25 17:13 1729【网上购物论坛】-IT泡吧![Www.itpb.Cn]网上购物 ... -
Hibernate:merge(),attachDirty(),attachClean()
2010-01-22 16:05 1153学java和asp.net的朋友-免 ... -
MonoRail学习笔记十七:TransformFilter的使用
2009-04-27 19:23 545TransformFilter是用来转换用的,比如把页面所有 ... -
ExtJS学习笔记1--onReady
2009-05-08 11:44 836ExtJS学习笔记1--onReady 这几天在学习Ex ... -
ExtJs学习笔记(8)_TabPanel的用法
2009-05-08 14:29 849ExtJs学习笔记(8)_TabPanel的用法 啥 ... -
ExtJs学习笔记(17)_table布局
2009-05-08 14:36 836ExtJs学习笔记(17)_table布局 tabl ... -
ExtJs学习笔记(16)_Form布局
2009-05-08 14:37 876ExtJs学习笔记(16)_Form布局 这是最重要的一个 ... -
《ExtJS2.0实用简明教程》之ExtJS简介
2009-05-25 09:29 0ExtJS是一个Ajax框架,是一个用javascript写 ... -
《ExtJS2.0实用简明教程》之ExtJS简介
2009-05-25 09:29 1066ExtJS是一个Ajax框架,是一个用javascript写 ...
相关推荐
了解Struts2.0标签的源码有助于我们更好地优化代码,例如,自定义标签以满足特定需求,或者在处理复杂数据结构时利用OGNL的灵活性。此外,还可以学习如何配置Struts2拦截器,结合标签库实现更强大的功能,如表单验证...
- 通过主题和模板,可以自定义标签的外观,满足不同设计需求。 - 错误和验证可以通过Struts 2的内置机制处理,如使用`<s:fielderror>`标签显示错误信息。 在实际项目中,UI标签的使用极大地降低了页面开发的复杂性...
总的来说,这个教程涵盖了Struts2.0的基础知识,从最基础的XML配置到复杂的Action链和自定义标签使用,都是学习和掌握Struts2.0必不可少的内容。通过深入学习和实践,你将能够熟练地运用Struts2.0构建高效、可维护的...
Struts 2.0 是一个基于MVC设计模式的Java Web框架,它极大地简化了开发过程,特别是处理用户输入和数据转换。在Struts 2中,类型转换器(Type Converter)扮演着至关重要的角色,它负责将HTTP请求中的字符串数据转换...
Struts 2.0 是一个基于MVC(Model-View-Controller)设计模式的Java Web...在"struts2.0常用标签.txt"文件中,你可能会找到更多关于这些标签的详细使用示例和解释,这将有助于进一步学习和掌握Struts 2.0 标签的用法。
Struts2.0提供了丰富的标签库,分为非UI标签和UI标签两大类。非UI标签主要用于控制流程和数据处理,例如用于URL重写,用于输出变量值。而UI标签则专注于页面元素的展示,如、等,它们能自动绑定模型属性,极大地简化...
这个压缩包文件提供了丰富的资源,包括入门教程、帮助手册、权威指南、配置文档以及标签库和实际操作的增删改查代码,为学习和掌握Struts2.0提供了全面的支持。 首先,`Struts2.0中文教程.chm`和`Struts2入门2.pdf`...
Struts2.0是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用程序的工具。这个"Struts2.0学习系列"旨在帮助初学者及进阶者深入理解并...
Struts2.0是一个强大的Java Web开发框架,它极大地简化了MVC(Model-View-Controller)应用的构建。在Struts2中,标签库是其核心特性之一,提供了丰富的标签来帮助开发者更加便捷地创建动态网页。本文将深入探讨...
2. **自定义标签**:如何创建和使用自定义标签,以满足特定需求。 3. **标签的属性和用法**:每个标签都有其特定的属性和用法,熟悉这些可以帮助你更有效地构建视图。 通过这些资源,无论是初学者还是有经验的...
4. **强大的标签库**:Struts2.0 提供了丰富的标签库支持,如 `<s:textfield>`、`<s:submit>` 等,这些标签可以帮助开发者快速构建用户界面。 5. **国际化支持**:Struts2.0 内置了国际化(I18N)支持,可以通过配置...
以上只是Struts2.0标签库中的一部分,实际上还有更多标签如表单验证、标签自定义等,它们共同构成了强大的视图层支持,使得Struts2.0在Java Web开发中被广泛应用。掌握这些标签的使用,将极大提高开发效率和代码质量...
六、自定义标签 如果内置的标签不能满足需求,开发者还可以创建自己的标签。这需要编写对应的Java类,并配置在struts.xml文件中,从而扩展Struts2的功能。 七、最佳实践 1. 在使用标签时,尽量避免直接操作HTML,...
Struts2.0是一款强大的Java Web开发框架,它在MVC设计模式的基础上提供了一套完整的解决方案,用于构建可维护、可扩展的企业级应用程序。在这个"都市供求信息系统"项目中,我们能够深入理解并实践Struts2.0的核心...
4. 自定义标签库:Struts2.0提供了一套强大的自定义JSP标签,简化视图层的开发,如、等。 5. 国际化与本地化:Struts2.0内置了对多语言的支持,开发者可以通过资源文件轻松实现应用的国际化。 三、Struts2.0的配置...
其次,Struts2.0提供了强大的拦截器(Interceptor)机制,这是一系列预定义的或自定义的处理步骤,可以在Action执行前后进行干预,如日志记录、权限检查等。开发者可以通过自定义拦截器来实现特定的需求,增强框架的...
第三部分“Building the View: Tags and Results”专注于如何利用Struts 2.0提供的标签库和结果处理机制来构建动态视图页面。 - **标签库**:Struts 2.0包含了一套丰富的标签库,这些标签不仅提供了HTML元素的快速...
Struts2.0是Java Web开发中的一个强大框架,它基于Model-View-Controller(MVC)设计模式,为开发者提供了构建可维护性高、结构清晰的Web应用程序的工具。这个"Struts2.0培训课件"包含了深入学习和理解Struts2.0框架...
9. **Struts 2.0标签库**:熟悉各种内置的JSP标签,如s:textfield、s:submit等,以及如何使用它们来简化视图层开发。 10. **异常处理**:学习如何配置全局和局部的异常处理策略,以优雅地处理运行时错误。 11. **...