JSP定制标记——用“脚本编程变量”取代bean来进行遍历
来源:互联网 发布:淘宝更改绑定手机号 编辑:程序博客网 时间:2024/06/10 04:27
Tag13.java
package tag13;
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.Iterator;
public class Tag13 extends BodyTagSupport {
private List lists;
private Iterator iters;
public void setLists(List lists){
this.lists = lists;
}
public int doStartTag() throws JspException {
return EVAL_BODY_BUFFERED;
}
public void doInitBody() throws JspException {
if (lists.size() <= 0) return;
iters = lists.iterator();
pageContext.setAttribute(this.id, iters.next());
}
public int doAfterBody() throws JspException {
if (iters.hasNext()) {
pageContext.setAttribute(this.id, iters.next());
return EVAL_BODY_AGAIN;
} else {
try {
bodyContent.writeOut(this.getPreviousOut());
} catch (IOException ioe) {
throw new JspException(ioe.getMessage());
}
}
return SKIP_BODY;
}
}
Info13.java
package tag13;
import javax.servlet.jsp.tagext.TagData;
import javax.servlet.jsp.tagext.TagExtraInfo;
import javax.servlet.jsp.tagext.VariableInfo;
public class Info13 extends TagExtraInfo {
public VariableInfo[] getVariableInfo(TagData data) {
return new VariableInfo[] {
new VariableInfo(data.getId(),
"java.lang.Object",
true,
VariableInfo.NESTED)
};
}
}
tag13.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/dtd/web-jsptaglibrary_1_2.dtd'>
<taglib>
<tlib-version>1.2</tlib-version>
<jsp-version>1.2</jsp-version>
<short-name>aaaaaaaaaaaaaaa</short-name>
<info>aaaaaaaaaa</info>
<tag>
<name>tag13</name>
<tag-class>tag13.Tag13</tag-class>
<tei-class>tag13.Info13</tei-class>
<body-content>JSP</body-content>
<attribute>
<name>id</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
<attribute>
<name>lists</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag>
</taglib>
tag13.jsp
<%@ page contentType="text/html;charset=GBK" %>
<%@ taglib prefix="tag" uri="tag13.tld" %>
<%@ page import="java.util.List,
java.util.ArrayList"
%>
<html>
<body>
<%
List mylists = new ArrayList();
mylists.add("aaaaaaaaaaaaaaa");
mylists.add("bbbbbbbbbbbbbbbbbbbbbbbbbbbbb");
mylists.add("ccccccccccccccccccccccccccccccccccc");
mylists.add("dddddddddddddddddddddddddddddddddddddddddddd");
%>
<table width="300" border="5">
<tag:tag13 id="iter" lists="<%=mylists%>">
<tr><td><%=iter%></td></tr>
</tag:tag13>
</table>
</body>
</html>
结果:
aaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbbbbbbbbbbbbcccccccccccccccccccccccccccccccccccdddddddddddddddddddddddddddddddddddddddddddd
分析:
1、在标记类中每次计算Body时,以标记类的ID为key保存bean到PageContext中,然后在JSP页面中直接访问这个bean。
2、由于标记类的ID属性由TagSupport类和BodyTagSupport类进行维护,因此程序员在自己定制的标记类中无须另设定一个ID属性。
- JSP定制标记——用“脚本编程变量”取代bean来进行遍历
- JSP定制标记——在JSP标记中自定义脚本编程变量
- JSP定制标记——通过pageContext访问Attribute值
- jsp定制标记
- JSP定制标记——分析java.util.Locale,根据地区选择显示日期的标记
- jsp脚本标记
- 【阅读】《Head First Servlets & JSP》第九章——强大的定制标记
- JSTL 入门(2):探讨 core——使用定制标记进行流控制和 URL 管理
- JSP 定制标记库开发示范
- jsp中的标记性变量
- 用VS2008进行MFC编程时添加变量出现脚本错误的解决方法
- 注解的应用-用在方法上进行标记--通过标记来识别处理某些方法
- 定制标记
- 重构笔记——以查询取代临时变量
- java中的全局变量---->类中pulic static 变量名 来取代--->类名.变量名, 直接用
- 洗心革面 重新学习JSP! ----之四:定制标记(1)
- Servlet & JSP 基础5(定制标记开发)
- Shell脚本编程-变量
- 谁是客户——浅析学习型组织
- java Thread(http://java.sun.com/docs/books/tutorial/essential/threads)
- 让域对象(Domain Object)纵穿整个系统
- 请问:求算法的时间复杂度
- JSP定制标记——在JSP标记中自定义脚本编程变量
- JSP定制标记——用“脚本编程变量”取代bean来进行遍历
- JSP定制标记——通过pageContext访问Attribute值
- 游戏设计十诫律 Travis S. Casey (zz)
- 难得享受一下的下午
- 在asp.net中,我用c#进行AD操作,添加用户
- Java正则表达式详解
- 雄关漫道真如铁,而今漫步从头越
- 50个精彩工商管理类专业网站集锦
- 用VC++实现FTP的实验