我有一个grails标记库TpTagLib,在其中我想定义4个仅在一个常量值上有所不同的新标记,因此我尝试使用curry。
但是有一个异常(exception):groovy.lang.MissingPropertyException:无此类属性:类:TpTagLib的attr

有谁知道为什么会发生这种异常?
这是代码:

def ifPermsTag = { permissions, attr, body ->
    def user = attr?.user ?: session.userInstance
    if( !user ) return false
    if( !securityService.hasPermissions(user,permissions) ) return false
        out << body()
    return true
}


def canAdminRequestmaps = ifPermsTag.curry(Permission.CAN_ADMIN_REQUESTMAPS)
def canAdminCorporations = ifPermsTag.curry(Permission.CAN_ADMIN_CORPS)
def canAdminUsers = ifPermsTag.curry(Permission.CAN_ADMIN_USERS)
def canAdminDevices = ifPermsTag.curry(Permission.CAN_ADMIN_DEVICES)

最佳答案

很酷的技术。您只需要将ifPermsTag设置为私有(private),这样就不会将其视为可用的标记方法:

private ifPermsTag = { permissions, attr, body ->
...
}

标签可以没有参数,也不能有“attr”参数,也不能有“attr”和“body”参数,但其他签名无效。

关于grails - 使用Curry定义Grails标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1372145/

10-10 17:57