如何在接收来自父 jsp 页面的属性的 JSP 中创建自定义标签?


您可以将各种属性与自定义标签一起使用。为了接受属性值,自定义标签类需要实现setter方法,与以下所示的 JavaBean setter 方法相同 −

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());
      }
   }
}

属性名称为"message",因此 setter 方法是setMessage()。现在让我们使用<attribute>元素将此属性添加到 TLD 文件中,如下所示 −

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

让我们按照如下使用带有消息属性的 JSP −

<%@ 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>

这将产生以下结果 −

This is custom tag

更新日期:30-Jul-2019

193 次浏览

开启您的 职业生涯

完成课程后获得认证

立即开始
广告