【发布时间】:2014-08-21 03:48:16
【问题描述】:
我从我的操作中得到一个列表,我想对照 GSP 中的另一个值进行检查。我希望能够查看该值是否在返回的列表中。我知道你可以直接比较
<g:if a="a">
但我正在寻找的是数组比较中的字符串
<g:if a in [a,b,c,d]>
需要类似的东西
<g:if test="${myList}.contains(${username})}">
试过了:
<g:if test="${myList.contains(username)}">
一切都返回假(即使包含应该为真)
测试数据:
${myList.keySet()}
${username}
<g:if test="${failedToSync.keySet().contains(username)}">
<li>${username} yes</li>
</g:if>
<g:else>
<li>${username} no</li>
</g:else>
输出:
[a] b
b no
[a] a
a no
附加信息:
"${username.stripIndent() == failedToSync.keySet()[0]}" 返回真
<g:if test="${(failedToSync.keySet()).contains(username.stripIndent())}"> returns false
【问题讨论】:
-
<g:if test="${myList.contains(username)}">应该做你想做的事,你确定列表肯定包含正确的东西吗?例如,如果myList是User对象的列表,而username是String,那么它将(正确地)总是返回false。 -
@IanRoberts 使用 getClass() 验证了两个对象并验证它们都是字符串
-
您从用户那里得到了一些输入并试图在不重新加载页面的情况下比较该值?我认为您可能需要使用 AJAX 编写一些 javascript。
-
我的输入可能有点晚了我只是在做类似的事情在我的情况下它是 myList.contains(instance.id) 直到我将它更改为 myList.containst(instance .id 作为字符串)。 id 被通过 json 发送回控制器并重新收集,因此改变了类型。斗篷和匕首总是通过做某事来测试.getClass()