一.dream.tld
<?xml version="1.0" encoding="utf-8"?>
<taglib xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd" version="2.0">
<description>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>dream</short-name>
<uri>/dream</uri>
<description>version 1.0</description>
<tag>
<name>date</name>
<tag-class>com.DateTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>format</name>
<required>false</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
二.Date.java
package com.taglib;
import java.io.IOException;
import java.io.Writer;
import java.text.Format;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.components.Component;
import com.opensymphony.xwork2.util.ValueStack;
public class Date extends Component {
private HttpServletRequest request;
private String name;
private String format;
public Date(ValueStack vs) {
super(vs);
}
public Date(ValueStack vs, HttpServletRequest request) {
super(vs);
this.request = request;
}
//get.set略
public HttpServletRequest getRequest() {
return request;
}
public void setRequest(HttpServletRequest request) {
this.request = request;
}
public boolean end(Writer writer, String body) {
boolean result = super.start(writer);
try {
if (name != null && !"".equals(name)) {
Format f = new SimpleDateFormat(format);
StringBuffer sb = new StringBuffer();
String[] s = name.split("[.]");
Object obj = this.getStack().findValue(s[s.length - 1]);
if (obj instanceof java.sql.Timestamp) {
sb.append(f.format(obj));
} else if (obj instanceof java.util.Date) {
sb.append(f.format(obj));
} else if (obj instanceof java.util.Calendar) {
java.util.Calendar c = (Calendar) obj;
sb.append(f.format(c.getTime()));
}
writer.write(sb.toString());
}
} catch (IOException ex) {
ex.printStackTrace();
}
return result;
}
}
三.DateTag.java
package com.taglib;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts2.components.Component;
import org.apache.struts2.views.jsp.ComponentTagSupport;
import com.opensymphony.xwork2.util.ValueStack;
public class DateTag extends ComponentTagSupport {
private String name;
private String format = "yyyy-MM-dd";
public String getFormat() {
return format;
}
public void setFormat(String format) {
this.format = format;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Component getBean(ValueStack vs, HttpServletRequest request, HttpServletResponse response) {
return new Date(vs, request);
}
protected void populateParams() {
super.populateParams();
Date date = (Date) component;
date.setName(name);
date.setFormat(format);
}
}
四.jsp
<%@ taglib uri="/WEB-INF/tlds/dream.tld" prefix="dream"%>
...
<dream:date name="menu.uppTime" format="yyyy-MM-dd HH:mm:dd" />
<dream:date name="time" format="yyyy-MM-dd" />
....
其中,name可以是任何时间类型如:TimeStample,Date,Calendar等等,如果还有其他类型,可以扩展Date.java
name可以是"action中的实体.属性",或者是"action.属性".
分享到:
相关推荐
总之,本资源提供的Struts2自定义分页标签教程将帮助新手快速掌握这一实用技能,节省开发时间,提高项目效率。通过学习和实践,开发者可以更好地理解和应用Struts2框架,提升其在Web开发中的专业能力。
在深入探讨自定义拦截器之前,我们先理解一下Struts2拦截器的基本概念。 拦截器(Interceptor)是基于Java的动态代理机制实现的,它可以拦截用户的请求,对请求进行预处理,并且在Action执行后进行后处理。通过在...
本篇文章将详细探讨如何在Struts自定义标签的Java类中获取`HttpSession`对象,并对其应用场景进行深入分析。 ### 一、Struts自定义标签简介 #### 1.1 Struts自定义标签的作用 在Web应用开发中,经常需要在JSP页面...
### Struts2 S 标签库详解 #### 引言 Struts2 是一款流行的 Java Web 开发框架,它提供了一系列强大的功能来帮助开发者构建健壮的 Web 应用程序。其中,Struts2 的标签库是其核心特性之一,为开发者提供了丰富的 ...
Struts2是一个流行的MVC框架,它的标签库极大地方便了开发者在JSP页面上的工作。下面将详细介绍Struts2中的部分核心标签及其用法。 A. `<s:a>` 和 `<s:action>`: - `<s:a href="">` 标签用于创建超链接,它可以绑定...
本教程主要探讨如何在Struts2框架下实现一个基于JSP的自定义分页组件,名为"zoo-paging-1.0.jar"。该组件不仅提供了分页功能,还附带了源代码和示例项目,方便开发者理解和应用。 首先,我们来理解分页的基本概念。...
标题和描述中提到的知识点是关于Struts 2框架中的标签库使用,特别是与JSP相关的部分。Struts 2框架是一种基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,用于构建动态、可扩展的Web应用。其标签...
### Struts2中的S标签详解 #### 一、概述 Struts2框架是Apache软件基金会下的一个开源项目,它提供了一种基于MVC(Model-View-Controller)设计模式的Web应用开发框架。Struts2提供了丰富的标签库,其中“S标签”...
在这个场景中,我们关注的是Struts2中的自定义标签(Custom Tags)技术,特别是如何更有效地读取网页内容。描述中提到的"先前是用httpclient来读取,但是很耗时间",暗示了这里可能涉及到了一种优化网页读取效率的...
- **Struts2标签库的作用**: - 提供了一系列HTML标签的替代品,可以帮助开发者更方便地构建动态网页。 - 支持数据绑定、表单验证等功能,提高了Web应用的开发效率和可维护性。 - **OGNL表达式语言**: - OGNL是...
Struts 2 标签库(文档手册) Tags-API-CLSW-JSP <%@ taglib prefix="s" uri="/struts-tags" %> 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. <s:a href=""></s:a>-...
Struts框架是Java Web开发中的一个关键组件,它主要用于构建MVC(模型-视图-控制器)架构的应用程序。...在实际项目中,自定义转换器常用于处理复杂的业务逻辑,如货币转换、时间格式化、特殊字符过滤等场景。
在给定的标签“源码”和“工具”中,我们可以理解到,这个压缩包可能包含了示例代码或者一些工具,如IDE插件,用于帮助开发者更好地理解和使用Struts2自定义拦截器。文件名`strutsdemo`可能是一个简单的Struts2演示...
Struts2是一个强大的MVC框架,它提供了丰富的标签库,简化了JSP页面的编写,提高了开发效率。在Struts2中,所有的标签都统一在`<s>`前缀下,通过引入`<%@ taglib prefix="s" uri="/struts-tags" %>`就可以在页面上...
虽然从Struts1迁移到Struts2需要一定的努力和时间投入,但从长远来看,这种转变是值得的。Struts2不仅能够提高应用程序的性能和可维护性,还能够更好地适应不断变化的技术环境。通过上述步骤和注意事项,可以确保...
这时,你可以使用Struts2的拦截器,如`ConversionErrorInterceptor`,它能帮助处理类型转换错误,并提供自定义的格式化逻辑。 在测试Struts2的日期和数字格式化功能时,可以创建一个简单的Action类,设置日期和数字...
Struts2提供了一系列强大的标签库,可以帮助开发者更高效地构建Web页面。这些标签不仅提供了丰富的功能,如表单控件、循环遍历等,而且还支持国际化和主题切换等功能。 - **表单标签**:用于生成表单元素。 - **...
在Struts中,`ec`标签库(Extreme Components)提供了丰富的组件来帮助开发者创建动态的用户界面,特别是表格展示和交互。以下是对`ec:table`标签及其相关属性的详细说明: 1. `<ec:table>`标签是核心组件,用于...
4. **封装成标签**:为了方便重复使用,将文件上传的功能封装成一个自定义的Struts2标签。这样在其他页面中,只需要插入这个标签,就可以实现文件上传并显示进度条。 在实际应用中,这样的文件上传功能对于用户来说...
此标签类似于Struts1中的JavaBean引用,但在Struts2中并不常用,因为Struts2更倾向于使用Action来处理业务逻辑。 C. `<s:checkbox>`, `<s:checkboxlist>`, `<s:combobox>`, `<s:component>`: 这些标签用于创建复选...