JSP自定义标签--没有正文的但带有属性的JSP自定义标签标签实现


package cn.com.chenlly.tag;

import java.io.IOException;
import java.util.Date;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport;

//无正文标签类继承的是TagSupport类 实现的接口是Tag。 如果有正文的标签类继承的是BodyTagSupport类 实现的接口是BodyTag
public class DateTagNoBody extends TagSupport {
private static final long serialVersionUID = 1L;

private String pattern;

@Override
public int doStartTag() throws JspException {
HttpServletRequest request;
// 是TagSupport类中定义的一个属性,它是javax.servlet.jsp.PageContext的对象
request = (HttpServletRequest) pageContext.getRequest();
java.text.SimpleDateFormat formater = new java.text.SimpleDateFormat(
pattern);
String date = formater.format(new Date());
JspWriter out = pageContext.getOut();
try {

out.println("<hr>");
out.println("<table border='2'>");
out.println("<tr>");
out.println("<td>");
out.print(date);
out.println("</td>");
out.println("</tr>");
out.println("</table>");
out.println("<hr>");
} catch (IOException e) {
e.printStackTrace();
}
// doStartTag() 方法返回 SKIP_BODY 。当然其原因是我们的简单日期标记没有正文。
return Tag.SKIP_BODY;
}

// 必须实现setXX()方法
public void setPattern(String pattern) {
this.pattern = pattern;
}
}





<?xml version="1.0" encoding="UTF-8"?>
<taglib>
<tlibversion>1.0</tlibversion>
<jspversion>1.2</jspversion>

<tag>
<name>displayDate</name>
<tagclass>cn.com.chenlly.tag.DateTagNoBody</tagclass>
<bodycontent>empty</bodycontent><!-- 定义属性 -->
<attribute>
<name>pattern</name><!-- 属性名字 -->
<type>String</type><!-- 属性类型 -->
<requried>false</requried><!-- 是否必须 -->
<rtexprvale>false</rtexprvale><!-- 表示是否可以使用JSP表达式 -->
</attribute>
</tag>

</taglib>




<%@ page language="java" pageEncoding="UTF-8"%>
<%@ taglib uri="/WEB-INF/datetag.tld" prefix="c"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<c:displayDate pattern='yyyy-MM-dd'/>
<br/>
<c:displayDate pattern='MM/dd HH:mm:ss'/>
</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值