Showing posts with label Start Up. Show all posts
Showing posts with label Start Up. Show all posts

Friday, August 6, 2010

Conditional Statements <c:if > , <c:choose > , <c:when > , <c:otherwise > in JSTL for 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.

<c:if >
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="http://java.sun.com/jsp/jstl/core" 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>

<c:choose > , <c:when > and, <c:otherwise >
This tags are used to write code in the form of if/else , if / elseif / else ...
Check the bellow example for how we can achieve if/else code using choose / when / otherwise in JSTL
<%-- 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>


If you want to use nested if / elseif / else ... condition then check the following sample code

<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 --%>
<%-- Default value in the body content --%>
<c:out value='${param.p}'>
    Generate this if p is null
</c:out>

JSTL Guide , Tutorial , Startup or First Program

There are two versions of the JSTL : one that enables the JSTL expression language support and one that doesn't. JSTL expression language support replaces the expression JSP tag with a more convenient syntax. For example, the JSP expression:
<c_rt:if test='<%= request.getParameter("p") != null %>'>
    <%= request.getParameter("p") %>
</c_rt:if>

can be written as
<c:if test="${param.p != null}">
    <c:out value="${param.p}" />
</c:if>

with expression language support enabled. More detailed information about the expression language is available at http://www.jcp.org/aboutJava/communityprocess/first/jsr052/index.html.

As mentioned in Using the Java Standard Tag Library (JSTL) in a JSPPage, there are four tag libraries that make up the JSTL. There are two versions of each of these libraries. That example declares the use of the four tag libraries that do not support the expression language. Here is an example that declares the use of the four tag libraries that do support the expression language:
<%-- Core with EL --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

<%-- I18N Formatting with EL --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

<%-- SQL with EL --%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>

<%-- XML with EL --%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %>

<%-- JSTL functions with EL --%>

<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>