クラスと関数名を指定し、その基準に基づいて関数呼び出しをインターセプトできる汎用関数を grails で作成しようとしています。
getSomeClass().metaClass.invokeMethod = { String methodName, args ->
MetaMethod someAction = getSomeClass().metaClass.getMetaMethod(methodName, args)
def result = someAction.invoke(delegate, args)
if (methodName==getSomeMethodName())
intercept(args, result)
return result
}
これは、POGO およびドメイン クラスでは機能しますが、コントローラー クラスでは機能しないようです。Grails で利用可能な Controller インターセプターとフィルターがあることは十分承知していますが、これらは私が達成しようとしていることを実際に集中化するものではなく、いくつかの集中化された動作のための単純な汎用関数を作成しようとしていました。
これがコントローラーで機能しない理由についてのガイダンスをいただければ幸いです。