3

grails タグ ライブラリ TpTagLib があり、その中で 1 つの定数値だけが異なる 4 つの新しいタグを定義したいので、カレーを使用しようとしました。ただし、例外があります: 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 に答える