我有一个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/