«ЕСЛИ» JSTL не возвращает результат согласно условию - PullRequest
0 голосов
/ 06 октября 2018

У меня есть два тега jstl if, и они оба получают выполненное событие, если один из случаев возвращает 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}"> выполняется.ЕСЛИ JSTL не оценивает условия, которые я предполагаю.

Любое руководство будет по-настоящему оценено!

Заранее спасибо!

1 Ответ

0 голосов
/ 08 октября 2018

Используйте <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>
...