if...else within JSP or JSTL

I want to output some HTML code based on some condition in a JSP file.

if (condition 1) { Some HTML code specific for condition 1 } else if (condition 2) { Some HTML code specific for condition 2 } 

How can I do that? Should I use JSTL?

2

13 Answers

Should I use JSTL ?

Yes.

You can use <c:if> and <c:choose> tags to make conditional rendering in jsp using JSTL.

To simulate if , you can use:

<c:if test="condition"></c:if> 

To simulate if...else, you can use:

<c:choose> <c:when test="${param.enter=='1'}"> pizza. <br /> </c:when> <c:otherwise> pizzas. <br /> </c:otherwise> </c:choose> 
5

If you just want to output different text, a more concise example would be

${condition ? "some text when true" : "some text when false"} 

It is way shorter than c:choose.

8

The construct for this is:

<c:choose> <c:when test="${..}">...</c:when> <!-- if condition --> <c:when test="${..}">...</c:when> <!-- else if condition --> <c:otherwise>...</c:otherwise> <!-- else condition --> </c:choose> 

If the condition isn't expensive, I sometimes prefer to simply use two distinct <c:if tags - it makes it easier to read.

3

In case you want to compare strings, write the following JSTL:

<c:choose> <c:when test="${myvar.equals('foo')}"> ... </c:when> <c:when test="${myvar.equals('bar')}"> ... </c:when> <c:otherwise> ... </c:otherwise> </c:choose> 
1
<%@ taglib prefix='c' uri=' %> <c:set var="val" value="5"/> <c:choose> <c:when test="${val == '5'}"> Value is 5 </c:when> <c:otherwise> Value is not 5 </c:otherwise> </c:choose> 

simple way :

<c:if test="${condition}"> //if </c:if> <c:if test="${!condition}"> //else </c:if> 

You can write if-else condition inside <% %> in jsp pages and html code outside of <% %>

For example:

 <% String username = (String)session.getAttribute("username"); if(username==null) { %> <p> username is null</p> //html code <% } else { %> <p> username is not null</p> //html code <% } %> 
1
<%@ taglib prefix='c' uri=' %> <c:set var="isiPad" value="value"/> <c:choose> <!-- if condition --> <c:when test="${...}">Html Code</c:when> <!-- else condition --> <c:otherwise>Html code</c:otherwise> </c:choose> 
<c:if test="${any_cond}" var="condition"> //if part </c:if> <c:if test="${!condition}"> //else part </c:if> 
<c:if test="${condition1 && condition2 && condition3}" var="condition"> //if </c:if> <c:if test="${!condition}"> //else </c:if> 

This is an another way to take the if condition in a variable.

If you want to do the following by using JSTL Tag Libe, please follow the following steps:

[Requirement] if a number is a grater than equal 40 and lower than 50 then display "Two digit number starting with 4" otherwise "Other numbers".

[Solutions]

1. Please Add the JSTL tag lib on the top of the page.` <%@ taglib uri="" prefix="c" %>` 2. Please Write the following code ` <c:choose> <c:when test="${params.number >=40 && params.number <50}"> <p> Two digit number starting with 4. </p> </c:when> <c:otherwise> <p> Other numbers. </p> </c:otherwise> </c:choose>` 

In case you want to compare strings, write the following JSTL :

<c:choose> <c:when test="${myvar.equals('foo')}"> ... </c:when> <c:when test="${myvar.equals('bar')}"> ... </c:when> <c:otherwise> ... </c:otherwise> </c:choose> 
0
<c:choose> <c:when test="${not empty userid and userid ne null}"> <sql:query dataSource="${dbsource}" var="usersql"> SELECT * FROM newuser WHERE ID = ?; <sql:param value="${param.userid}" /> </sql:query> </c:when> <c:otherwise > <sql:query dataSource="${dbsource}" var="usersql"> SELECT * FROM newuser WHERE username = ?; <sql:param value="${param.username}" /> </sql:query> </c:otherwise> 
1

You Might Also Like