Lặp lại bằng cách sử dụng thẻ tùy chỉnh JSP

Chúng ta có thể lặp lại nội dung thân của bất kỳ thẻ nào bằng phương thức doAfterBody () của giao diện IterationTag .

lap-trinh-vien-java
Lặp lại bằng cách sử dụng thẻ tùy chỉnh JSP

Ở đây chúng ta sẽ sử dụng lớp TagSupport thực hiện giao diện IterationTag. Để lặp lại nội dung cơ thể, chúng ta cần sử dụng hằng số EVAL_BODY_AGAIN trong phương thức doAfterBody ().

Ví dụ về Lặp lại bằng Thẻ tùy chỉnh JSP

Trong ví dụ này, chúng ta sẽ sử dụng thuộc tính trong thẻ tùy chỉnh, trả về sức mạnh của bất kỳ số nào. 

Chúng tôi đã tạo ba tệp ở đây:

  • 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> 

Vòng lặp sử dụng Thẻ lặp (tạo thẻ cho vòng lặp)

Hãy tạo một thẻ vòng lặp lặp lại nội dung cơ thể của thẻ này.

Tệp: 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> 

File: 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>  

File: 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;  
       }  
          
    }  
  
      
}  

File: 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>  

Bài viết gần đây

Java Lambda: Hướng dẫn cho người mới bắt đầu

Bài viết này giải thích các biểu thức Java Lambda trong Java 8. Biểu thức Lambda Java

Ví dụ về Tải xuống tệp từ máy chủ bằng cách sử dụng JSP

Trong ví dụ này, chúng tôi sẽ tải xuống tệp jsp. Nhưng bạn có thể tải xuống bất kỳ tập tin. 

Hướng dẫn sử dụng Spring JdbcTemplate

Spring JdbcTemplate là một cơ chế mạnh mẽ để kết nối với cơ sở dữ liệu và thực hiện các truy vấn SQL. Nó sử...

Hướng dẫn chủ đề Java

Một Instance of Thread là một đối tượng giống như bất kỳ đối tượng nào khác trong Java và nó chứa các biến và...

Tải tập tin lên máy chủ bằng cách sử dụng JSP

Có nhiều cách để tải tệp lên máy chủ. Một trong những cách là bởi lớp MultipartRequest. Để sử dụng lớp này,...

Ví dụ cấu hình Spring AOP AspectJ Xml

Spring cho phép bạn xác định các khía cạnh, lời khuyên và điểm nhấn trong tệp xml. Trong trang...

Leave a reply

Please enter your comment!
Please enter your name here