The Java Developers Almanac 1.4


Order this book from Amazon.

   
Home > List of Packages > javax.servlet.jsp.jstl.core  [6 examples]

e1069. Conditionally Generating Output Using JSTL in a JSP Page

Any non-JSP code in a JSP file is called template text and is automatically written to the output stream. The JSTL tags <c:if> and <c:choose> make it possible to dynamically generate template text depending on a condition. The <c:if> tag generates its body if the expression in the test attribute evaluates to the boolean value true or the string value "true":
    <%-- Declare the core library --%>
    <%@ taglib uri="/WEB-INF/tld/c.tld" prefix="c" %>
    
    <%-- Simple if conditions --%>
    <c:if test='${param.p == "someValue"}'>
        Generate this template text if p equals someValue
    </c:if>
    
    <c:if test='${param.p}'>
        Generate this template text if p equals "true"
    </c:if>
An if/else action requires the use of the <c:choose> tag:
    <%-- A simple if/else condition --%>
    <c:choose>
        <c:when test='${param.p == "someValue"}'>
            Generate this template text if p equals someValue
        </c:when>
        <c:otherwise>
            Otherwise generate this template text
        </c:otherwise>
    </c:choose>
Multiple conditions can be evaluated using the <c:choose> tag:
    <c:choose>
        <c:when test='${param.p == "0"}'>
            Generate this template text if p equals 0
        </c:when>
        <c:when test='${param.p == "1"}'>
            Generate this template text if p equals 1
        </c:when>
        <c:otherwise>
           Generate this template text if p equals anything else
        </c:otherwise>
    </c:choose>
The <c:out> can also be used to conditionally generate template text. If the value attribute is null, a default value (if specified) is generated. The default value can be specified using the default attribute or can be specified in the body content. This example demonstrates both methods:
    <%-- Default value in an attribute --%>
    <c:out value='${param.p}' default="Generate this if p is null" />
    
    <%-- Default value in the body content --%>
    <c:out value='${param.p}'>
        Generate this if p is null
    </c:out>

 Related Examples
e1064. Using the Java Standard Tag Library (JSTL) in a JSP Page
e1065. Enabling the JSTL Expression Language in a JSP Page
e1066. Getting a Request Parameter Using JSTL in a JSP Page
e1067. Saving Data Using JSTL in a JSP Page
e1068. Saving and Emitting HTML Fragments Using JSTL in a JSP Page


© 2002 Addison-Wesley.