JSP自定义标签-迭代
1 JSP自定义标签进行迭代
我们可以使用IterationTag接口的doAfterBody()方法来迭代任何标签的主体内容。
下面示例中,我们将使用实现IterationTag接口的TagSupport类。为了迭代主体内容,我们需要在doAfterBody()方法中使用EVAL_BODY_AGAIN常量。
2 JSP自定义标签迭代示例
在下面示例中,我们将在自定义标签中使用属性,该属性用于设置遍历的次数。
2.1 编写标签处理程序
LoopRecord:
package com.yiidian;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;
/**
* 一点教程网 - http://www.yiidian.com
*/
public class LoopRecord extends TagSupport{
private int number;
private int counter;
public void setNumber(Integer number) {
this.number = number;
}
public int doStartTag() throws JspException {
return EVAL_BODY_INCLUDE;
}
public int doAfterBody() {
counter++;
if (counter==number)
return SKIP_BODY;
else
return EVAL_BODY_AGAIN;
}
public int doEndTag() throws JspException {
return EVAL_PAGE;
}
}
2.2 编写mytags.tld
mytags.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>1.2</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>c</short-name>
<uri>yiidian.com</uri>
<tag>
<name>loopRecord</name>
<tag-class>com.yiidian.LoopRecord</tag-class>
<attribute>
<name>number</name>
<required>true</required>
</attribute>
</tag>
</taglib>
2.3 编写index.jsp
index.jsp:
<%@ page language="java" contentType="text/html;charset=utf-8" %>
<%@ taglib uri="yiidian.com" prefix="y" %>
<html>
<html>
<head>
<meta charset="utf-8">
<title>一点教程网-带属性的JSP自定义标签输出数据库记录</title>
</head>
<body>
<y:loopRecord number="5">
一点教程网<br/>
</y:loopRecord>
</body>
</html>
2.4 运行测试
热门文章
优秀文章