猿教程 Logo

JSP自定义标签中的迭代

我们可以使用IterationTag接口的doAfterBody()方法迭代任何标签的正文内容。

这里我们将使用实现IterationTag接口的TagSupport类。 对于迭代body内容,我们需要在doAfterBody()方法中使用EVAL_BODY_AGAIN常量。


使用JSP自定义标记的迭代示例

在此示例中,我们将使用自定义标记中的属性,该属性返回任何给定数字的权力。 我们在这里创建了三个文件

  • index.jsp

  • PowerNumber.java

  • mytags.tld

index.jsp

<%@ taglib uri="WEB-INF/mytags.tld" prefix="m" %>

3 ^ 5 = <m:power number="3" power="5">
body
</m:power>

PowerNumber.java

package com.javatpoint.taghandler;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class PowerNumber extends TagSupport{
private int number;
private int power;
private static int counter;
private static int result=1;

public void setPower(int power) {
	this.power = power;
}

public void setNumber(int number) {
	this.number = number;
}

public int doStartTag() throws JspException {
	return EVAL_BODY_INCLUDE;
}

public int doAfterBody() {
    counter++; 
    result *= number; 
    if (counter==power) 
      return SKIP_BODY; 
    else 
      return EVAL_BODY_AGAIN; 
  } 

public int doEndTag() throws JspException {
	JspWriter out=pageContext.getOut();
	try{
		out.print(result);
	}catch(Exception e){e.printStackTrace();}
	
	return EVAL_PAGE;
}
}

mytags.tld

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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.0</tlib-version>
  <jsp-version>1.2</jsp-version>
  <short-name>simple</short-name>
  <uri>http://tomcat.apache.org/example-taglib</uri>
  <description>A simple tab library for the examples</description>

  <tag>
    <name>power</name>
    <tag-class>com.javatpoint.taghandler.PowerNumber</tag-class>
    
    <attribute>
    <name>number</name>
    <required>true</required>
    </attribute>
    
    <attribute>
    <name>power</name>
    <required>true</required>
    </attribute>
  
  </tag>
</taglib>

使用迭代标签循环(为循环创建标签)

让我们创建一个循环标签来迭代这个标签的正文内容。

index.jsp

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Insert title here</title>
</head>
<body>

<%@taglib prefix="m" uri="sssuri" %>
<m:loop end="5" start="1">
<p>My Name is khan</p>
</m:loop> 

</body>
</html>

mytags.tld

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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.0</tlib-version>
  <jsp-version>1.2</jsp-version>
  <short-name>abc</short-name>
  
  <uri>sssuri</uri>
 <tag>
    <name>loop</name>
    <tag-class>com.javatpoint.customtag.Loop</tag-class>
   
    <attribute>
    <name>start</name>
    <required>true</required>
    </attribute>
    
    <attribute>
    <name>end</name>
    <required>true</required>
    </attribute>
 </tag>
 
</taglib>

Loop.java

package com.javatpoint.customtag;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport;

public class Loop extends TagSupport{
	private int start=0;
	private int end=0;
	
	public void setStart(int start) {
		this.start = start;
	}
	public void setEnd(int end) {
		this.end = end;
	}
	
	@Override
	public int doStartTag() throws JspException {
		return EVAL_BODY_INCLUDE;
	}

	@Override
	public int doAfterBody() throws JspException {
		if(start<end){
			start++;
			return EVAL_BODY_AGAIN;
		}else{
		return SKIP_BODY;
	   }
		
	}

	
}

web.xml:

<?xml version="1.0" encoding="UTF-8"?>  
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">  
  
<jsp-config>  
<taglib>  
<taglib-uri>sssuri</taglib-uri>  
<taglib-location>/WEB-INF/mytags.tld</taglib-location>  
</taglib>  
</jsp-config>  
  
</web-app>

输出



版权声明:本站所有教程均为本站原创或翻译,转载请注明出处,请尊重他人劳动果实。请记住本站地址:www.yuanjiaocheng.net (猿教程) 作者:卿文刚
本文标题: C#环境
本文地址:http://www.yuanjiaocheng.net/Jsp/Iteration-using-jsp-custom-tag.html