使用Curry定义Grails标签

时间:2009-09-03 08:32:52

标签: grails tags closures currying

我有一个grails标签库TpTagLib,在其中我想定义4个只有一个常量值不同的新标签,所以我尝试使用curry。 但是有一个例外: groovy.lang.MissingPropertyException:没有这样的属性:类的attr: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)    

1 个答案:

答案 0 :(得分:3)

酷技术。你只需要将ifPermsTag设为私有,这样它就不被认为是一种可用的标记方法:

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

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