我有两个if jstl标记,并且如果其中一种情况返回true,它们都将被执行。
请参考以下代码,其中HasBooked为true:
<form class="form-group" action="book_hotel.jsp" method="POST">
<select class="form-control dest" name="destination" onchange="getSelDest(this)">
<%
boolean hasBooked = (Boolean) session.getAttribute("hasBooked");
%>
<c:if test = "${!hasBooked}"> //returns true still it is not skipped
<option value="null">Choose a destination</option>
</c:if>
<c:if test = "${hasBooked}">
<option selected value="${destination}">${destination}</option>
</c:if>
<option value="Chile">Chile</option>
<option value="Cuba">Cuba</option>
<option value="Dubai">Dubai</option>
<option value="Egypt">Egypt</option>
</select>
<div class="text-center" style="margin:3% 0;">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</form>
我已经通过打印hasBooked的值进行了测试,确实确实在执行第一种情况<c:if test = "${!hasBooked}">
的情况下。 IF JSTL没有评估我认为的条件。
任何指导将不胜感激!
谢谢!
答案 0 :(得分:1)
使用<c:choose>
代替多个<c:if>
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<c:choose>
<c:when test = "${not hasBooked}"> //returns true still it is not skipped
<option value="null">Choose a destination</option>
</c:when>
<c:otherwise>
<option selected value="${destination}">${destination}</option>
</c:otherwise>
</c:choose>