Search code examples
springspring-mvcjstl

Using spring form tag inside a custom JSTL library


I need to create a custom JSTL tag which wraps multiple spring form tags. A single tag which produces the below content with custom attribute values as well.

       <div class="col-md-4 col-sm-6 cal-xs-12">
            <div class="form-group">
                <label for="statusCode">Employee Status Code: </label>
                <form:input path="statusCode" class="form-control" id="statusCode" value="${statusCode}" />
            </div>
        </div>

Is this achievable?


Solution

  • create a file formInputFiled.tag inside WEB-INF/tags/form directory.

    formInputFiled.tag:

    <%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
    <%@ attribute name="id" required="true" rtexprvalue="true" %>
    <%@ attribute name="path" required="true" rtexprvalue="true" %>
    <%@ attribute name="label" required="true" rtexprvalue="true" %>
    <%@ attribute name="value" required="true" rtexprvalue="true" %>
    <%@ attribute name="parentDivClass" required="true" rtexprvalue="true" %>
    <%@ attribute name="divClass" required="true" rtexprvalue="true" %>
    <%@ attribute name="inputClass" required="true" rtexprvalue="true" %>
    <div class="${parentDivClass}">
        <div class="${divClass}">
            <label for="${id}">${label}</label>
            <form:input path="${path}" class="${inputClass}" id="${id}" value="${value}" />
        </div>
    </div>
    

    Add taglib declaration in your jsp like below:

    <%@ taglib prefix="form" tagdir="/WEB-INF/tags/form" %>
    

    Finally use the new tag like below:

    <form:formInputFiled id="statusCode" path="statusCode" label="Employee Status Code:" value="${statusCode}" parentDivClass="col-md-4 col-sm-6 cal-xs-12" divClass="form-group" inputClass="form-control"/>