3

我有一个 grails 标签库 TpTagLib,我想在其中定义 4 个新标签,它们仅在一个常量值上有所不同,所以我尝试使用 curry。但是有一个例外:groovy.lang.MissingPropertyException: No such property: attr for class: TpTagLib

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

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)    
4

1 回答 1

3

很酷的技术。您只需要将 ifPermsTag 设为私有,因此它不被视为可用标签方法的候选者:

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

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

于 2009-09-03T13:00:49.573 回答