您的位置:首页 > Web前端 > JavaScript

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 ■■■■■■■■■
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: