How can I create custom tag in JSP which can accept attribute from parent jsp page?



You can use various attributes along with your custom tags. To accept an attribute value, a custom tag class needs to implement the setter methods, identical to the JavaBean setter methods as shown below −

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

The attribute's name is "message", so the setter method is setMessage(). Let us now add this attribute in the TLD file using the <attribute> element as follows −

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

Let us follow JSP with message attribute as follows −

<%@ 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 will produce the following result −

This is custom tag
Updated on: 2019-07-30T22:30:25+05:30

237 Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements