This post helps you understand and use the <c:if> tag in the JSTL core tag library.

You know, <c:if> is a conditional tag which executes the body of the tag is given condition evaluates to true.

 

JSTL <c:if> Syntax

<c:if test="<boolean>" var="<string>" scope="<string>">
   ...
</c:if>

Attributes

Name

Required

Type

Description

test

True

boolean

Test expression which determines whether body content is executed or not. If test evaluates to true body content is executed.

var

False

 java.lang.String

Name of the variable which holds the result of the test condition. The type of this variable is Boolean.

scope

False

java.lang.String

Scope of the var

 

JSTL <c:if> Example:

The below is an example which takes radio button selection from user and displays message whether user likes movies or not. Note that there is no ‘else’ construct.

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
    "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
     <title>&lt;c:if&gt; Demo</title>
   </head>
   <body>
     <h1>&lt;c:if&gt; Demo</h1>
     <c:if test="${param.movieCheck == 'yes'}">
         Ok! Great Choice!
     </c:if>
     <c:if test="${param.movieCheck == 'no'}">
         Oops! Perhaps you can try watching them!
     </c:if>
    <br/>
    <br/>
    <form name="ifForm" 
        action="${pageContext.request.contextPath}/tag-types/core/if.jsp" 
        method="POST">
      Do you like movies? <br/>
        Yes <input type="radio" name="movieCheck" value="yes"/><br/>
        No <input type="radio" name="movieCheck" value="no"/><br/>
      <input type="submit" value="submit"/> 
    </form>
  </body>
</html>
The below example checks the value of a variable age, if the given age is more than 18 it is printing a message. Note that the variable booleanValue holds the actual result of the test expression in this case evaluates to true.

<c:set var="age" scope="session" value="20"/>
<c:if test="${age > 18}" var="booleanValue">
   <p>Eligible to vote because you're <c:out value="${age}"/> years old.</p>
   <p>Test result is <c:out value="${booleanValue}"/></p>
</c:if>
The below example retrieves the logged in user information from request scope, if the user is admin displaying a message.

<c:if test="${loggedInUser==’admin’}">
    Ok you’re administrator!
</c:if>
Note that there is no ‘else’ part of the condition. For more sophisticated ‘if-else’ scenario we use tags <c:choose>, <c:when> and <c:otherwise>.



 

Output:

if-demo

In the above screen, we are using <C:if>to display a message based on the choice selected by the user.

 

Recommended Usage of JSTL <c:if> tag:

Particularly useful if we have only one condition to evaluate and we do not need to evaluate else  conditions.

 

Other JSTL Core Tags:

catch |  choose   |  forEach  |  forTokens   |  import   |  out   |  param  |  redirect  |  remove   |  set  |  url


About the Author:

is certified Java programmer (SCJP and SCWCD). He began programming with Java back in the days of Java 1.4 and has been passionate about it ever since. You can connect with him on Facebook and watch his Java videos on YouTube.



Add comment

   


Comments 

#1Nawaz Pasha2016-06-28 01:36
Hi,

When the value of test expression of c:if tag changes dynamically, its contents are being appended at the end of the tree. Why does this happen?
Quote