我有一个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)
答案 0 :(得分:3)
酷技术。你只需要将ifPermsTag设为私有,这样它就不被认为是一种可用的标记方法:
private ifPermsTag = { permissions, attr, body ->
...
}
标签可以没有参数,'attr'参数,'attr'和'body'参数,但其他签名无效。