Computer >> Máy Tính >  >> Lập trình >> Lập trình

Làm cách nào để tạo thẻ tùy chỉnh trong JSP có thể chấp nhận thuộc tính từ trang jsp chính?

Bạn có thể sử dụng các thuộc tính khác nhau cùng với các thẻ tùy chỉnh của mình. Để chấp nhận một giá trị thuộc tính, một lớp thẻ tùy chỉnh cần triển khai setter các phương thức, giống với các phương thức của JavaBean setter như được hiển thị bên dưới -

package com.tutorialspoint;

import javax.servlet.jsp.tagext.*;
import javax.servlet.jsp.*;
import java.io.*;

public class HelloTag extends SimpleTagSupport {
   private String message;
   public void setMessage(String msg) {
      this.message = msg;
   }
   StringWriter sw = new StringWriter();
   public void doTag()
   throws JspException, IOException {
      if (message != null) {
         /* Use message from attribute */
         JspWriter out = getJspContext().getOut();
         out.println( message );
      } else {
         /* use message from the body */
         getJspBody().invoke(sw);
         getJspContext().getOut().println(sw.toString());
      }
   }
}

Tên của thuộc tính là "message" , vì vậy phương thức setter là setMessage () . Bây giờ, hãy để chúng tôi thêm thuộc tính này vào tệp TLD bằng cách sử dụng phần tử như sau -

<taglib>
   <tlib-version>1.0</tlib-version>
   <jsp-version>2.0</jsp-version>
   <short-name>Example TLD with Body</short-name>

   <tag>
      <name>Hello</name>
      <tag-class>com.tutorialspoint.HelloTag</tag-class>
      <body-content>scriptless</body-content>

      <attribute>
      <name>message</name>
      </attribute>

   </tag>
</taglib>

Hãy để chúng tôi theo dõi JSP với thuộc tính message như sau -

<%@ taglib prefix = "ex" uri = "WEB-INF/custom.tld"%>

<html>
   <head>
      <title>A sample custom tag</title>
   </head>

   <body>
      <ex:Hello message = "This is custom tag" />
   </body>
</html>

Điều này sẽ tạo ra kết quả sau -

This is custom tag