记得struts框架中自带了标签<%@ taglib prefix="s" uri="/struts-tags"%>....通过值栈和上下文的方式,用起来比较方便,根据这个出发点并且模仿于此思路,开始写自定义标签。
1、标签配置:(my-tags.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/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
<taglib>
<tlib-version>2.2.3</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>aa</short-name>
<uri>/my-tags</uri>
<tag>
<name>cwytm</name>
<tag-class>com.web.tags.MyTags</tag-class>
<attribute>
<name>isShow</name>
<required>false</required>
<type>String</type>
</attribute>
</tag>
</taglib>
2、MyTags.java文件
package com.web.tags;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class MyTags extends BodyTagSupport {
private String isShow;
public void setIsShow(String isShow) {
this.isShow = isShow;
}
public String getIsShow() {
return isShow;
}
//通常在doStartTag里进行逻辑操作,在doEndTag里控制输出。
// @Override
// public int doStartTag() throws JspException {
// if ("true".equals(isShow)) {
// //显示标签里面的内容
// return EVAL_BODY_INCLUDE;
// }
// //不显示标签里面的内容
// return SKIP_PAGE;
// }
@Override
public int doEndTag() throws JspException {
try {
//表示标签要输出的内容
pageContext
.getOut()
.write("http://img4.cache.netease.com/cnews/2012/9/6/2012090618561229020.jpg");
} catch (IOException e) {
e.printStackTrace();
}
return EVAL_BODY_INCLUDE;
}
}
3、标签的使用
<%@ taglib prefix="aa" uri="/my-tags"/>
<aa:cwytm isShow="false"> this si my tag content</aa:cwytm>
<img alt="" src="<aa:cwytm />">