代码之家  ›  专栏  ›  技术社区  ›  Azder

使用curry定义grails标记

  •  3
  • Azder  · 技术社区  · 16 年前

    我有一个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 回复  |  直到 16 年前
        1
  •  3
  •   Burt Beckwith    16 年前

    酷技术。您只需将ifpermstag设为私有,这样就不会将其视为可用的标记方法:

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

    标记不能有参数,或者“attr”参数,或者“attr”和“body”参数,但是其他签名无效。

    推荐文章