4

コントローラーをより迅速に構築し、重複を取り除くために、基本クラスを作成しました。いくつかのヘルパー メソッド、デフォルト アクション、およびいくつかのメタ プログラミングを提供して、これらを簡単に構築できるようにします。

基本クラスのメソッドの 1 つは次のようなものです。

def dynamicList(Class clazz) {
    def model = new LinkedHashMap()
    model[getMapString(clazz) + "s"] = list(clazz)
    model[getMapString(clazz) + "sTotal"] = count(clazz)

    model
}

それを呼び出すアクションは、基本クラスでも次のとおりです。

def list = {
    dynamicList(clazz)
}

残念ながら、アプリケーションのデプロイ時に基本クラスを継承するコントローラー サブクラスのリスト アクションに移動すると、次の例外が発生します。

groovy.lang.MissingMethodException: No signature of method: groovy.lang.MissingMethodException.dynamicList() is applicable for argument types: (java.lang.Class) values: [class project
.user.User]

    at project.user.UserController$_closure1.doCall(UserController.groovy:18)

    at project.user.UserController$_closure1.doCall(UserController.groovy)

    at java.lang.Thread.run(Thread.java:619)

どうすればグレイルを頭上にぶつけて、やりたいことをやらせることができますか? 私のコントローラーユニットテストは問題なく実行されるため、grails の実行時間は完全に問題があります :/

ケン

4

3 に答える 3

0

継承がすべて適切であり、Grailsをクリーンに実行したことなどを確認しますか?あなたが説明した状況はうまくいくはずです。

于 2010-05-30T03:47:58.240 に答える
0

それはコード全体ですか?list()in の呼び出しdynamicList()はアクションと一致するため、問題が発生する可能性があります。つまり、list()は の短縮形であり、クロージャlist.call()を呼び出します。list

クラスでdynamiclist()メソッドが見つからないという例外があるため、確かに非常に奇妙なことが起こっています。MissingMethodException

再現可能な例はありますか?

于 2010-06-02T08:30:59.950 に答える