“ IF” JSTL没有根据条件返回输出

时间:2018-10-06 15:20:26

标签: jsp servlets jstl jsp-tags

我有两个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没有评估我认为的条件。

任何指导将不胜感激!

谢谢!

1 个答案:

答案 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>