2017-01-17 30 views
-1

我試圖在<c:choose>中使用<c:forEach><c:if>。我原來的計劃是當列表大小爲0時,它顯示「沒有結果」,如果不是,則顯示列表中的內容。但是,似乎每當我使用<c:choose>時,頁面無法正常加載,即使${param}也無法捕捉參數。JSTL c:選擇並複製c:forEach,c:如果問題

這是我的代碼。第一部分是我使用$ {param}的地方,當沒有<c:choose>時,它可以很好地工作。

<select class="myselect" id="type_size" name="type_size"> 
     <c:if test="${param.type_size eq null}"> 
      <c:forEach var="i" begin="2" end="6" step="2"> 
       <option value="${i}">${i}</option> 
      </c:forEach> 
     </c:if> 
    <c:if test="${param.type_size ne null}"> 
     <option value=" ${param.type_size}"> ${param.type_size}</option> 
    </c:if> 
</select> 

這裏是<c:choose><c:forEach>

<div class="container> 
<c:if test="${item[0].getRoom_no eq null}"> 
    <div class="row_room"> 
     <div class="item"> 
      There is no result available at this moment. 
     </div> 
    </div> 
</c:if> 
    <c:if test="${item[0].getRoom_no ne null}">  
    <c:forEach var="tmp" items="${item}" varStatus="idx"> 
    <c:if test="${idx.index%3==0}"> 
    <div class="row"> 
    </c:if> 
    <div class="item"> 
<div class="media"> 
<img src="resources/room_img/${tmp.getRoom_img01()}"/> 
    </div><!-- media end --> 
    <div class="row"> 
     </c:if> 
      <h4>${tmp.getRoom_no()} | ${tmp.getType_name()} </h4> 
      <button type="button" onclick="location.href='roomView?checkin=${param.checkin}&checkout=${param.checkout}&type_size=${param.type_size}&room_no=${tmp.getRoom_no()}'">reserve</button> 
    </div><!-- row end --> 
    <c:if test="${idx.index%3 == 2 || idx.index == end}"> 
    </div> 
    </div><!-- row end --> 
    </c:if> 
    </c:forEach> 
    </c:otherwise> 
    </c:if> 
    </c:choose> 
    </div><!-- container end --> 

回答

1

一些語法錯誤,我發現代碼:

  • 缺少收盤行情:<div class="container>應該是<div class="container">
  • 我沒有看到<c:choose><c:otherwise>的任何開放標記。 <c:when>也缺失。

的基本結構選擇 - 當 - 否則就是:

<c:choose> 
    <c:when test="${something eq 0}"> 
     something is zero 
    </c:when> 
    <c:when test="${something gt 0}"> 
     something is positive 
    </c:when> 
    <c:otherwise> 
     something is negative 
    </c:otherwise> 
</c:choose> 

可能會有更多的錯誤,但我不能看到,因爲壞的標籤縮進/格式。
這也意味着代碼在這種形式不可維護。
考慮將if-else邏輯移動到servlet/class並讓jsp顯示數據。