`

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标签格式化时间

    对于java返回的未定义格式的时间,可以用struts2标签进行自定义格式,可在sturts2标签中规定格式进行输出。

    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;-...

    Struts2+API+标签全解+网页说明

    datetimepicker标签:生成一个日期、时间下拉列表框。 head标签:生成HTML页面的HEAD部分。 file标签:在页面上生成一个上传文件元素。 hidder标签:生成一个不看见的用户输入元素。 select标签:生成下拉列表框...

    struts2的去取网页标签

    这个是用来读取网页的自定义标签。 先前是用httpclient来读取,但是很耗时间。

    freemarker+struts2仿QQ分页效果

    因为现在一般都用strut2,为了有很好的通用性,首先想到的自然是strut2的自定义标签。于是马上google一下。果然,一大堆。不过由于小弟资历浅薄,也没心思看,主要是strut2的标签本来我就觉得不大习惯,另外上个月...

    Servlet与JSP核心编程

    《Servlet与JSP核心编程(第2卷 第2版)》在第l卷的基础上,广泛涉及自定义标签库、过滤器、声明式安全、JSTL和Struts等主题,并沿袭深受读者喜爱的写作风格,通过完整、有效、资料丰富的程序来演绎目前最流行的技术和...

    从J2SE到J2EE知识点介绍

    3. Struts 2 标签库说明及使用 160 4. set 描述 169 5. text 描述 170 6. property 描述 170 7. Struts的异常处理 171 8. Struts的上传与下载 178 五、 Hibernate 192 (一) 前言 192 (二) 持久化层 193 (三) ORM介绍...

    java项目之hrm人事管理项目(java毕业设计)

    2、后台:Struts2、动态代理、Mybatis框架、log4J日志框架、jstl 、jstl自定义分页标签、代码机器人、Dwr、POI(实现Excel文件的导入导出)等 3、数据库:Mysql 4、服务器:Tomcat 项目中涉及的功能: 1、项目以及...

    健身房管理信息系统设计.doc

    Struts是一个基于Sun J2EE平台的MVC框架,Struts把Servlet、JSP、自定义标签和信息资源(Message Resources)整合到统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套 MVC模式,极大的节省了时间[4]。...

    JAVA程序开发大全---上半部分

    20.4.2 格式化处理时间的StrFormat类 350 20.5 登录和注册模块的实现 351 20.5.1 对应用户的实体类User 351 20.5.2 用户注册页面register.jsp 354 20.5.3 负责用户注册的Servlet类reg 356 20.5.4 生成随机验证码的...

    Java学习笔记-个人整理的

    \contentsline {chapter}{Contents}{2}{section*.1} {1}Java基础}{17}{chapter.1} {1.1}基本语法}{17}{section.1.1} {1.2}数字表达方式}{17}{section.1.2} {1.3}补码}{19}{section.1.3} {1.3.1}总结}{23}{...

    基于AJAX技术的电子商城系统的设计与开发

    而Struts把Servlet、JSP、自定义标签和信息资源整合到一个统一的框架中,开发人员利用其进行开发时不用再自己编码实现全套MVC模式,更好实现了分层,并节省了时间开发;Hibernate是一个开放源代码的对象关系映射框架...

    rnpicker:最灵活和可定制的React本机选择器

    {标签:字符串| 数字,值:字符串 | 数字,已选择?:布尔}[] [] 每个项目的数据 时间 布尔值 错误的 启用从右到左的支持 项目组件 React原生组件 每个项目的包装组件 项目样式 {} —— 应用于每个 ...

    java三大框架

    Struts实现的重点在C(Controller),包括ActionServlet/RequestProcessor和我们定制的 Action,也为V(View)提供了一系列定制标签(Custom Tag)。但Struts几乎没有涉及M(Model),所以Struts可以采用JAVA实现的任何形式...

    java开源包2

    JCaptcha4Struts2 是一个 Struts2的插件,用来增加验证码的支持,使用时只需要用一个 JSP 标签 (&lt;jcaptcha:image label="Type the text "/&gt; ) 即可,直接在 struts.xml 中进行配置,使用强大的 JCaptcha来生成验证码...

    java面试题

    Struts2只是起到一个数据接收和转接的功能,就是Controller控制器,而传来数据的页面叫view显示层,Struts2将数据提交给进行处理的类叫Model模型层,专门进行数据处理和数据库的连接。 heap和stack有什么区别? 答:...

Global site tag (gtag.js) - Google Analytics