`
sunguanxing
  • 浏览: 1083968 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

struts2 自定义标签 (时间标签)

阅读更多
http://smallfish.iteye.com/blog/433136
最近项目中有这样的需求,需要将普通的时间格式转行成时间间隔模式,如:将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)+"分钟前";   
        }   
    }  



这段代码很简单,相信大家一看便懂了。
下面是距离当前时间天数的方法:Java代码
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;   
        }      
}  



这里是写一个方法调用这个算法返回一个值
Java代码
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
Java代码
<?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" />这样就可以了。是不是很简单呢。
分享到:
评论

相关推荐

    struts2 自定义标签

    通过struts2 自定义标签实例,可以用这个对项目中的实现自定义标签。从而减少代码。

    struts2自定义标签案例详解

    Struts2中实现自定义标签很简单,主要分为3步: 1.创建taglib文件(.tld),编写标签声明。 2.编写自定义标签类。 3.在页面中使用标签。 下面以一个自定义的分页标签为例,进行说明。 其实,开发自定义标签并不...

    Struts2自定义分页标签

    Struts2自定义分页标签很详细了,新手可以少走弯路,节约时间 资源包括了后台如何操作。

    struts实现自定义标签

    struts实现自定义标签

    Struts2自定义标签

    Struts2自定义标签,附带配置文件及后台代码,从工作当中整理

    struts2自定义标签

    struts2自定义标签struts2自定义标签struts2自定义标签struts2自定义标签

    tag struts2的自定义标签实例

    tag struts2 自定义标签 实例 tag struts2的自定义标签实例

    基于struts2 自定义标签 分页

    基于struts2的自定义分页标签实现的一个demo,连接数据库为Oracle

    STRUTS自定义标签

    STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS自定义标签STRUTS...

    struts1自定义标签

    自定义标签,直接代码,直接模仿开发即可 public class ButtonTag extends AttributeTag { //tld中定义的属性 public String label; public String url; public String click; public String confirm; public ...

    Struts 2 自定义标签分页

    Struts 2 自定义标签分页,有简单上下分页和数字分页

    Struts2 自定义标签

    附件是一个简单的自定义标签,提供给大家参考,例子很简单,希望对大家有帮助,基于eclipse 开发

    struts自定义标签详解

    举例解说Bean Tags,HTML Tags 以及Logic Tags的使用方法。

    Struts2 自定义下拉框标签Tag(源码)

    自定义标签主要包括三个步骤: 1、编写java类,继承TagSupport类; 2、创建tld文件,影射标签名和标签的java类; 3、jsp页面引入tld。 博文地址:http://blog.csdn.net/itmyhome1990/article/details/50718282

    struts2的自定义标签

    struts2的自定义标签写法,并且有一个例子代码。

    Struts2_自定义标签的方法

    Struts2_自定义标签的方法

Global site tag (gtag.js) - Google Analytics