2013-04-01 89 views
0

我試圖確保對象列表不爲空,並且至少有一個項目在其中。請告訴我,我在做什麼錯了下面的代碼片段。if/else in jstl

<c:if test=" ${ (not empty educations) && (fn:length(educations) ge 1) }"> 
      <c:forEach items="${educations}" var="edu"> 
       <div class="educations">      
        <label>Position</label><input type="text" name="${ edu.index }" /><br/> 
        <label>School</label><input type="text" name="${ edu.school }" /><br/> 
        <label>Degree</label><input type="text" name="${ edu.degree }" /><br/> 
        <label>GPA</label><input type="text" name="${ edu.scored }" /><br/> 
        <label>Start Date</label><input type="text" name="${ edu.startDate }" /><br/> 
        <label>End Date</label><input type="text" name="${ edu.endDate }" /><br/> 
       </div> 
      </c:forEach>   
     </c:if> 

我發現它在if語句通過調試停權,並HMLT標籤內還沒有被渲染,即使有在的教育列表項

+0

你檢查了這個http://stackoverflow.com/questions/2811626/evaluate-empty-or-null-jstl-c-tags –

+0

是的。和已經http://stackoverflow.com/questions/9103082/jstl-condition-with-multiple-operators,但仍然無法弄清楚我的代碼段出了什麼問題。它看起來很好,但沒有正常工作 –

+0

它不能正常工作?我沒有看到任何明顯的語法錯誤。 – Makoto

回答

1

你有正確包括了JSTL的功能呢?

<%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 

並且還在訪問任何變量前添加前綴requestScope。

<c:if test=" ${not empty requestScope.educations}"> 
     <c:forEach items="${requestScope.educations}" var="edu"> 
      <div class="educations">      
       <label>Position</label><input type="text" name="${ edu.index }" /><br/> 
       <label>School</label><input type="text" name="${ edu.school }" /><br/> 
       <label>Degree</label><input type="text" name="${ edu.degree }" /><br/> 
       <label>GPA</label><input type="text" name="${ edu.scored }" /><br/> 
       <label>Start Date</label><input type="text" name="${ edu.startDate }" /><br/> 
       <label>End Date</label><input type="text" name="${ edu.endDate }" /><br/> 
      </div> 
     </c:forEach>   
</c:if> 

這將是更好,如果你做的只是empty檢查

你的目的是要遍歷使用那麼它可能是很好的知道,它已經不能運行時所提供的項目是列表空。如果直接被這個檢查包圍,那麼這個檢查完全是多餘的。

+0

是的。我包括它。 FN:長度函數工作正常。唯一的問題是if語句。 –

+0

您是否嘗試添加requestScope ..檢查編輯。添加$ {}來獲得'educations'的長度 – Meherzad

+0

我按照你的建議嘗試了,並且得到了EL語法錯誤警告 –