2012-01-13 56 views
0

比較列表的值我需要遍歷屬於數據庫列的Integer類型的行的特定列表。數據庫中的此列是同一個表中父列ID的外鍵。在<c:if><c:if>

如果匹配,我必須匹配這兩個值並在JSP中打印。

我已經通過這個鏈接Evaluate list.contains string in JSTL,並一直試圖讓它工作。我不知道我到底出錯了。

這是我到目前爲止有:

<c:forEach var="List" items="${Section.LangList}"> 
    <c:if test="${List['Lang'] == List['Id']}"> 
     ... 
    </c:if> 
</c:forEach>  

這是我用過的比較值的一件事。我也嘗試過contains<c:set>。有什麼我失蹤了嗎?

+0

*是否有我丟失的東西*:包含列表中包含的對象的類的代碼。 – 2012-01-13 14:40:13

回答

2

你需要用小寫字母開始的屬性名稱上。 ${Section.LangList}將不起作用,它必須是${Sections.langList}

<c:forEach var="List" items="${Section.langList}"> 
    <c:if test="${List['Lang'] == List['Id']}"> 
     ... 
    </c:if> 
</c:forEach> 

如果仍然無法正常工作,另一個可能的原因是雙方的數據類型是不同的,即使它們包含相同的值。例如。 String的值爲"42"Integer的值爲42。您需要確保數據類型相同。


無關到具體的問題,你的命名約定是可怕的。 List<Language>的每個項目肯定不是另一個List,但可能是Language類。此外,使用大括號來訪問具有固定名稱的屬性是不必要的。只需使用${bean.property}表示法。下面將讓你的代碼更符合命名規則,更自我記錄:

<c:forEach var="language" items="${section.languages}"> 
    <c:if test="${language.lang == language.id}"> 
     ... 
    </c:if> 
</c:forEach> 

我只是仍然不知道如何${language.lang}是有道理的在這方面。

0

嘗試這樣:

<c:forEach var="item" items="${Section.LangList}">     
    <c:if test="${item.lang eq item.id}"> 
     ..... 
    </c:if> 
</c:forEach>  

,如果它不會工作告訴我們你的類是迭代名單

相關問題