我从我的操作中得到一个列表,我想要检查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)}">
并且所有内容都返回false(即使包含应该为true)
测试数据:
${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]}"
返回true
<g:if test="${(failedToSync.keySet()).contains(username.stripIndent())}"> returns false
答案 0 :(得分:2)
在Groovy中,您可以在任何集合上使用.contains
。那么,对于你的情况
<g:if test="${['a', 'b', 'c'].contains('a')}">
...
</g:if>
答案 1 :(得分:1)
如果您愿意,可以使用自定义标记:
grails-app/taglib/com/demo/StackOverflowTagLib.groovy
package com.demo
class StackOverflowTagLib {
static namespace = 'my'
// ...
def isInList = { attrs, body ->
def val = attrs.val
def list = attrs.collection
if(val in list) {
out << body()
}
}
}
grails-app/views/demo/index.gsp
<html>
<body>
<my:isInList val="Jeff" collection="${names}">
Yep, Jeff was in there.
</my:isInList>
</body>
</html>
grails-app/controllers/com/demo/DemoController.groovy
package com.demo
class DemoController {
def index() {
[names: ['Jeff', 'Betsy', 'Zack', 'Jake']]
}
}
我希望有所帮助。
答案 2 :(得分:0)
我想你已回答了自己的问题:是的,就像
一样<g:if test="${'a' in ['a','b','c','d']}">
Some Content
</g:if>