`

struts2自定义时间标签

阅读更多

一.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.属性".

1
0
分享到:
评论

相关推荐

    Struts2自定义分页标签

    总之,本资源提供的Struts2自定义分页标签教程将帮助新手快速掌握这一实用技能,节省开发时间,提高项目效率。通过学习和实践,开发者可以更好地理解和应用Struts2框架,提升其在Web开发中的专业能力。

    Struts2自定义拦截器

    在深入探讨自定义拦截器之前,我们先理解一下Struts2拦截器的基本概念。 拦截器(Interceptor)是基于Java的动态代理机制实现的,它可以拦截用户的请求,对请求进行预处理,并且在Action执行后进行后处理。通过在...

    struts中自定义的tag的Java类中如何获得session

    本篇文章将详细探讨如何在Struts自定义标签的Java类中获取`HttpSession`对象,并对其应用场景进行深入分析。 ### 一、Struts自定义标签简介 #### 1.1 Struts自定义标签的作用 在Web应用开发中,经常需要在JSP页面...

    struts2-s标签

    ### Struts2 S 标签库详解 #### 引言 Struts2 是一款流行的 Java Web 开发框架,它提供了一系列强大的功能来帮助开发者构建健壮的 Web 应用程序。其中,Struts2 的标签库是其核心特性之一,为开发者提供了丰富的 ...

    Struts2全部标签使用说明

    Struts2是一个流行的MVC框架,它的标签库极大地方便了开发者在JSP页面上的工作。下面将详细介绍Struts2中的部分核心标签及其用法。 A. `&lt;s:a&gt;` 和 `&lt;s:action&gt;`: - `&lt;s:a href=""&gt;` 标签用于创建超链接,它可以绑定...

    Struts2+jsp自定义分页组件以及源码

    本教程主要探讨如何在Struts2框架下实现一个基于JSP的自定义分页组件,名为"zoo-paging-1.0.jar"。该组件不仅提供了分页功能,还附带了源代码和示例项目,方便开发者理解和应用。 首先,我们来理解分页的基本概念。...

    Struts_2_标签库(文档手册)_Tags-API-CLSW-JSP

    标题和描述中提到的知识点是关于Struts 2框架中的标签库使用,特别是与JSP相关的部分。Struts 2框架是一种基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,用于构建动态、可扩展的Web应用。其标签...

    struts2的s标签

    ### Struts2中的S标签详解 #### 一、概述 Struts2框架是Apache软件基金会下的一个开源项目,它提供了一种基于MVC(Model-View-Controller)设计模式的Web应用开发框架。Struts2提供了丰富的标签库,其中“S标签”...

    struts2的去取网页标签

    在这个场景中,我们关注的是Struts2中的自定义标签(Custom Tags)技术,特别是如何更有效地读取网页内容。描述中提到的"先前是用httpclient来读取,但是很耗时间",暗示了这里可能涉及到了一种优化网页读取效率的...

    struts2讲义 struts2讲义struts2讲义struts2讲义struts2讲义

    - **Struts2标签库的作用**: - 提供了一系列HTML标签的替代品,可以帮助开发者更方便地构建动态网页。 - 支持数据绑定、表单验证等功能,提高了Web应用的开发效率和可维护性。 - **OGNL表达式语言**: - OGNL是...

    struts2 标签库 帮助文档

    Struts 2 标签库(文档手册) Tags-API-CLSW-JSP &lt;%@ taglib prefix="s" uri="/struts-tags" %&gt; 就能使用struts2.0的标签库 下面就介绍每个标签的具体应用实例说明:按字母排列 A: 1. 2. &lt;s:a href=""&gt;&lt;/s:a&gt;-...

    Struts 自定义转换器

    Struts框架是Java Web开发中的一个关键组件,它主要用于构建MVC(模型-视图-控制器)架构的应用程序。...在实际项目中,自定义转换器常用于处理复杂的业务逻辑,如货币转换、时间格式化、特殊字符过滤等场景。

    Struts2--自定义拦截器

    在给定的标签“源码”和“工具”中,我们可以理解到,这个压缩包可能包含了示例代码或者一些工具,如IDE插件,用于帮助开发者更好地理解和使用Struts2自定义拦截器。文件名`strutsdemo`可能是一个简单的Struts2演示...

    struts2标签介绍

    Struts2是一个强大的MVC框架,它提供了丰富的标签库,简化了JSP页面的编写,提高了开发效率。在Struts2中,所有的标签都统一在`&lt;s&gt;`前缀下,通过引入`&lt;%@ taglib prefix="s" uri="/struts-tags" %&gt;`就可以在页面上...

    Migrating From Struts1 To Struts2

    虽然从Struts1迁移到Struts2需要一定的努力和时间投入,但从长远来看,这种转变是值得的。Struts2不仅能够提高应用程序的性能和可维护性,还能够更好地适应不断变化的技术环境。通过上述步骤和注意事项,可以确保...

    Struts2 格式化日期、时间和数字

    这时,你可以使用Struts2的拦截器,如`ConversionErrorInterceptor`,它能帮助处理类型转换错误,并提供自定义的格式化逻辑。 在测试Struts2的日期和数字格式化功能时,可以创建一个简单的Action类,设置日期和数字...

    Struts2 框架概述

    Struts2提供了一系列强大的标签库,可以帮助开发者更高效地构建Web页面。这些标签不仅提供了丰富的功能,如表单控件、循环遍历等,而且还支持国际化和主题切换等功能。 - **表单标签**:用于生成表单元素。 - **...

    struts中ec标签的使用

    在Struts中,`ec`标签库(Extreme Components)提供了丰富的组件来帮助开发者创建动态的用户界面,特别是表格展示和交互。以下是对`ec:table`标签及其相关属性的详细说明: 1. `&lt;ec:table&gt;`标签是核心组件,用于...

    ssh2(struts2+spring2.5+hibernate3.3+ajax)带进度条文件上传(封装成标签

    4. **封装成标签**:为了方便重复使用,将文件上传的功能封装成一个自定义的Struts2标签。这样在其他页面中,只需要插入这个标签,就可以实现文件上传并显示进度条。 在实际应用中,这样的文件上传功能对于用户来说...

    Struts标签集合简介

    此标签类似于Struts1中的JavaBean引用,但在Struts2中并不常用,因为Struts2更倾向于使用Action来处理业务逻辑。 C. `&lt;s:checkbox&gt;`, `&lt;s:checkboxlist&gt;`, `&lt;s:combobox&gt;`, `&lt;s:component&gt;`: 这些标签用于创建复选...

Global site tag (gtag.js) - Google Analytics