Grails如何检查值是否在gsp的列表中



我从我的动作中得到一个列表,我想检查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(即使contains应该为真)

测试数据:

        ${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

在Groovy中,您可以对任何集合使用.contains。对于你的例子

<g:if test="${['a', 'b', 'c'].contains('a')}">
...
</g:if>

如果您喜欢,可以使用自定义标记:

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']]
    }
}

我想你已经回答了你自己的问题:是的,就像

<g:if test="${'a' in ['a','b','c','d']}">
    Some Content
</g:if>

相关内容

  • 没有找到相关文章

最新更新