JSP定制标记——在JSP标记中自定义脚本编程变量
2005-03-16 13:57
405 查看
package tag20;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import java.io.IOException;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
public class Tag20 extends BodyTagSupport {
private String string;
private List lists;
private Iterator iters;
public void setString(String string) {this.string = string;}
public void setLists(List lists) {this.lists = lists;}
public void doInitBody() throws JspException {
if (lists.size() >= 0) {
iters = lists.iterator();
}
if (iters.hasNext()) {
pageContext.setAttribute(string, iters.next());
}
}
public int doAfterBody() throws JspException {
try {
if (iters.hasNext()) {
pageContext.setAttribute(string, iters.next());
return EVAL_BODY_AGAIN;
} else {
getBodyContent().writeOut(getPreviousOut());
}
} catch (IOException ioe) {
throw new JspException(ioe.getMessage());
}
return SKIP_BODY;
}
}
package tag20;
import javax.servlet.jsp.tagext.TagExtraInfo;
import javax.servlet.jsp.tagext.TagData;
import javax.servlet.jsp.tagext.VariableInfo;
public class Info20 extends TagExtraInfo {
public VariableInfo[] getVariableInfo(TagData data) {
String string = (String) data.getAttribute("string");
VariableInfo infos = new VariableInfo(string,
"java.lang.String",
true,
VariableInfo.NESTED);
return new VariableInfo[] {infos};
}
}
<%@ page contentType="text/html;charset=GBK" %>
<%@ taglib prefix="tag" uri="tag20.tld" %>
<%@ page import="java.util.List,
java.util.ArrayList" %>
<%
ArrayList lists = new ArrayList();
lists.add("aaaaaaaaaaaaaaaaaaaaaa");
lists.add("bbbbbbbbbbbbbbbbbbbbbb");
lists.add("cccccccccccccccccccccc");
lists.add("dddddddddddddddddddddd");
lists.add("eeeeeeeeeeeeeeeeeeeeee");
lists.add("ffffffffffffffffffffff");
lists.add("gggggggggggggggggggggg");
%>
<tag:tag20 string="iters" lists="<%=lists%>">
<font color="red">■■■■■■■■■</font>
<%=iters%>
<font color="blue">■■■■■■■■■</font><br>
</tag:tag20>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC '-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN' 'http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd'>
<taglib>
<tlib-version>1.2</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>--------</short-name>
<info>```````</info>
<tag>
<name>tag20</name>
<tag-class>tag20.Tag20</tag-class>
<tei-class>tag20.Info20</tei-class>
<body-content>JSP</body-content>
<attribute>
<name>string</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>lists</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
结果:
■■■■■■■■■ aaaaaaaaaaaaaaaaaaaaaa ■■■■■■■■■
■■■■■■■■■ bbbbbbbbbbbbbbbbbbbbbb ■■■■■■■■■
■■■■■■■■■ cccccccccccccccccccccc ■■■■■■■■■
■■■■■■■■■ dddddddddddddddddddddd ■■■■■■■■■
■■■■■■■■■ eeeeeeeeeeeeeeeeeeeeee ■■■■■■■■■
■■■■■■■■■ ffffffffffffffffffffff ■■■■■■■■■
■■■■■■■■■ gggggggggggggggggggggg ■■■■■■■■■
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyTagSupport;
import java.io.IOException;
import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;
public class Tag20 extends BodyTagSupport {
private String string;
private List lists;
private Iterator iters;
public void setString(String string) {this.string = string;}
public void setLists(List lists) {this.lists = lists;}
public void doInitBody() throws JspException {
if (lists.size() >= 0) {
iters = lists.iterator();
}
if (iters.hasNext()) {
pageContext.setAttribute(string, iters.next());
}
}
public int doAfterBody() throws JspException {
try {
if (iters.hasNext()) {
pageContext.setAttribute(string, iters.next());
return EVAL_BODY_AGAIN;
} else {
getBodyContent().writeOut(getPreviousOut());
}
} catch (IOException ioe) {
throw new JspException(ioe.getMessage());
}
return SKIP_BODY;
}
}
package tag20;
import javax.servlet.jsp.tagext.TagExtraInfo;
import javax.servlet.jsp.tagext.TagData;
import javax.servlet.jsp.tagext.VariableInfo;
public class Info20 extends TagExtraInfo {
public VariableInfo[] getVariableInfo(TagData data) {
String string = (String) data.getAttribute("string");
VariableInfo infos = new VariableInfo(string,
"java.lang.String",
true,
VariableInfo.NESTED);
return new VariableInfo[] {infos};
}
}
<%@ page contentType="text/html;charset=GBK" %>
<%@ taglib prefix="tag" uri="tag20.tld" %>
<%@ page import="java.util.List,
java.util.ArrayList" %>
<%
ArrayList lists = new ArrayList();
lists.add("aaaaaaaaaaaaaaaaaaaaaa");
lists.add("bbbbbbbbbbbbbbbbbbbbbb");
lists.add("cccccccccccccccccccccc");
lists.add("dddddddddddddddddddddd");
lists.add("eeeeeeeeeeeeeeeeeeeeee");
lists.add("ffffffffffffffffffffff");
lists.add("gggggggggggggggggggggg");
%>
<tag:tag20 string="iters" lists="<%=lists%>">
<font color="red">■■■■■■■■■</font>
<%=iters%>
<font color="blue">■■■■■■■■■</font><br>
</tag:tag20>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE taglib PUBLIC '-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN' 'http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd'>
<taglib>
<tlib-version>1.2</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>--------</short-name>
<info>```````</info>
<tag>
<name>tag20</name>
<tag-class>tag20.Tag20</tag-class>
<tei-class>tag20.Info20</tei-class>
<body-content>JSP</body-content>
<attribute>
<name>string</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>lists</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
结果:
■■■■■■■■■ aaaaaaaaaaaaaaaaaaaaaa ■■■■■■■■■
■■■■■■■■■ bbbbbbbbbbbbbbbbbbbbbb ■■■■■■■■■
■■■■■■■■■ cccccccccccccccccccccc ■■■■■■■■■
■■■■■■■■■ dddddddddddddddddddddd ■■■■■■■■■
■■■■■■■■■ eeeeeeeeeeeeeeeeeeeeee ■■■■■■■■■
■■■■■■■■■ ffffffffffffffffffffff ■■■■■■■■■
■■■■■■■■■ gggggggggggggggggggggg ■■■■■■■■■
相关文章推荐
- jsp定制标记
- jsp自定义标记入门
- 【阅读】《Head First Servlets & JSP》第九章——强大的定制标记
- 实现 JSP 自定义标记
- J2EE 探索者:用五个容易的步骤实现 JSP 自定义标记
- JSP定制标记——分析java.util.Locale,根据地区选择显示日期的标记
- 《Head First Servlets & JSP》-10-定制标记开发
- 定制jsp标记(tag) [转]
- 和JSF一起使用JSTL和其它的JSP定制标记
- jsp进阶: 开发jsp自定义标记- -
- 洗心革面 重新学习JSP! ----之四:定制标记(1)
- 为您的JSP标记创建自定义属性
- jsp自定义标记入门
- jsp 自定义标签【继承TagSupport类】【在 tld描述 中声明 代码段变量】 简单例子四
- JSP自定义标记 标记处理器(TH) 构造器及生命周期
- Base-Jsp-18-自定义标记库
- jsp定制标记?
- JSP 定制标记库开发示范
- 和JSF一起使用JSTL和其它的JSP定制标记
- JSP定制标记的基本概念和构成;tld的使用和其中的rtexprvalue使用