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 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);
}
}
这里继承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>
分享到:
相关推荐
了解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. **...