gpt4 book ai didi

grails - 从 Grails Tablib 返回 bool 值?

转载 作者:行者123 更新时间:2023-12-02 09:01:54 25 4
gpt4 key购买 nike

我创建了一个自定义 Grails tablib:

  def hasRole = { attrs, body ->
boolean result = false
if (attrs.roles) {
if (SpringSecurityUtils.ifAnyGranted(attrs.roles)) {
result = true
}
}
out << result
}

可以这样使用:

${cust.hasRole(roles:'ROLE_ADMIN') ? 'yes' : 'no' }

问题是比较结果总是 yes 。看来表达式的计算不正确。

hasRole 的返回类类型为org.codehaus.groovy.grails.web.util.StreamCharBuffer .

如何正确评估上述表达式,使得 hasRole()返回 bool 值?

最佳答案

关键是在 TagLib 中使用 returnObjectForTags。默认情况下,标签库将信息输出到输出编写器 (out)。在你的情况下,你想做这样的事情:

package example

class FooTagLib {
static namespace = 'something'
static returnObjectForTags = ['hasRole']

def hasRole = { attrs, body ->
boolean result = false
...
return result
}
}

如您所见,returnObjectForTags 是您想要为其返回实际对象且不希望直接修改输出流的方法/闭包的静态列表。

关于grails - 从 Grails Tablib 返回 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31566008/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com