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?
213 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> 5If 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.
8The 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.
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