我需要遍历属于数据库列的特定行列表,类型为Integer
。数据库中的此列是同一表中父列ID的外键。
如果匹配,我必须匹配这两个值并在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 :(得分:2)
您需要使用小写启动属性名称。 ${Section.LangList}
无法正常工作,必须是${Sections.langList}
。
<c:forEach var="List" items="${Section.langList}">
<c:if test="${List['Lang'] == List['Id']}">
...
</c:if>
</c:forEach>
如果仍然不起作用,另一个可能的原因是双方的数据类型不同,即使它们包含相同的值。例如。 String
的{{1}}值与"42"
的{{1}}值相关联。您需要确保数据类型相同。
无关,你的命名惯例很糟糕。 Integer
的每个项目肯定不是另一个42
,但可能是List<Language>
类。此外,使用括号表示法来访问具有固定名称的属性是不必要的。只需使用List
表示法。以下内容将使您的代码更符合命名约定和更多自我记录:
Language
我仍然想知道${bean.property}
在这种背景下是如何理解的。
答案 1 :(得分:0)
尝试这样的事情:
<c:forEach var="item" items="${Section.LangList}">
<c:if test="${item.lang eq item.id}">
.....
</c:if>
</c:forEach>
如果它不起作用告诉我们你在迭代列表上的类