比较 JSP 中两个列表的元素并根据比较隐藏字段
Posted
技术标签:
【中文标题】比较 JSP 中两个列表的元素并根据比较隐藏字段【英文标题】:Compare elements of two lists in JSP and hide fields based on comparison 【发布时间】:2020-06-15 13:25:10 【问题描述】:我有两个列表。两者都有字符串消息。列表 A 包含所有消息,列表 B 包含列表 A 中存在的少量消息。 我正在迭代列表 A 和列表 B。尝试根据比较来比较和打印消息。如果两个列表中都存在列表消息,我将隐藏它以显示它。自定义列表给出了传递给方法以检索完整消息的键。列表中的两条消息都相同,但比较未按预期工作。请提出建议。
代码如下:
for(String testMsg:testPages.get(testAlertPage))
for(int i=0; i < customList.size(); i++)
if(testMsg.equals(retrieve(customList.get(i))))
%>
<p class="paragraph" style="display:none"><%=testMsg %></p><br>
<%
else
%>
<p><%=testMsg %></p><br>
<%
%>
【问题讨论】:
假设字符串具有 exact 相同的内容,那么您可以执行if(customList.contains(testMsg))
而不是自己迭代,这实际上是相同的。如果内容不同,那么这将不起作用,但equals()
也不会(如果大小写是唯一的区别,equalsIgnoreCase()
可能会起作用)。除此之外,如果你想隐藏它,为什么还要使用 display:none 来渲染消息?
顺便说一句,“但不知何故,比较没有按预期正常工作。” - 请记住,我们无法猜测您到底期望什么以及会发生什么,因此请将该信息添加到您的问题中,最好附上一些示例。
【参考方案1】:
通过这些嵌套循环,您可以将第一个列表中的每条消息与customList
中的all 消息进行比较,如果消息与那里的 any 元素不同,则显示它们.相反,对于每条消息,您应该只在它存在于customList
时才显示它:
<%
for (String testMsg : testPages.get(testAlertPage))
if (customList.contains(testMsg)
%>
<p class="paragraph" style="display:none"><%=testMsg %></p><br>
<%
else
%>
<p><%=testMsg %></p><br>
<%
%>
注意:您应该将customList
替换为Set
以获得更好的性能。
【讨论】:
我同意你的看法。我以前也尝试过同样的方法。但问题是我的清单有钥匙。然后我将这些键传递给一个方法,然后我得到完整的消息,我正在与其他列表元素进行比较。由于这个原因,我使用了两个 for 循环。在自定义列表的迭代之后,我得到了用于检索完整消息的密钥。代码 sn-p 下面: if(testMsg.equals(retrieveMsg(customList.get(i)))) 请提出任何可能的方法。以上是关于比较 JSP 中两个列表的元素并根据比较隐藏字段的主要内容,如果未能解决你的问题,请参考以下文章
使用 LINQ 获取两个比较列表的结果并根据结果更改列表中的属性