2

私は Grails で単純な Webflow を開発しました (主に Webflow を使用して実験するためです。この場合は少しやり過ぎです)。Serializable オブジェクトを使用したいくつかの試行錯誤の後、私はそれを機能させました - 時々。

これが問題です-アプリ(run-app)を起動した後に初めてWebflowにアクセスすると、次の例外が発生します:

2010-06-16 09:11:25,580 [http-8080-3] [ERROR] [org.codehaus.groovy.grails.web.errors.GrailsExceptionResolver] No signature of method: groovy.lang.MissingMethodException.to() is applicable for argument types: (java.lang.String) values: [validate]
Possible solutions: is(java.lang.Object), any(), use([Ljava.lang.Object;), getAt(java.lang.String), with(groovy.lang.Closure), any(groovy.lang.Closure)
groovy.lang.MissingMethodException: No signature of method: groovy.lang.MissingMethodException.to() is applicable for argument types: (java.lang.String) values: [validate]
Possible solutions: is(java.lang.Object), any(), use([Ljava.lang.Object;), getAt(java.lang.String), with(groovy.lang.Closure), any(groovy.lang.Closure)
        at com.sbs.component.survey.SurveyDefinitionController.invokeMethod(SurveyDefinitionController.groovy)
        at com.sbs.component.survey.SurveyDefinitionController$_closure3.doCall(SurveyDefinitionController.groovy:23)

コントローラーを「タッチ」して(空白を追加するだけでも編集を行って)ファイルを保存すると、Webflowが機能し始めます...コントローラーが少なくとも1回リロードされるまで、何かが配線されていないようです. 明らかに、これは初心者ではありません...これを引き起こしている考えはありますか?

Mac OSX Java 1.6 で Grails 1.3.1 を使用しています。

Webflow のスケルトンは次のとおりです。

def createSurveyFlow = {
        select {

            }.to("validate")
            on("cancel").to("finish")
        }

        validate {
            on("approve") {

            }.to("finish")
            on("disapprove").to("select")
            on("cancel").to("finish")
        }

        finish {
            action {
                flash.message = "SurveyDefinition created"            
            }
            redirect(controller:"surveyDefinition", action:"index")
        }

    }
4

1 に答える 1

1

私はそれを理解したかもしれません-webflowの定義とコントローラーのアクションは、同じコントローラー上にいるのがあまり好きではないようです。Webflowを独自のコントローラーに移動すると、この(およびその他の)問題は解消されたようです。今のところ、少なくとも。詳細がわかったら、また報告します。

于 2010-06-30T01:23:44.237 に答える