1

Grails 用の webflow プラグインを初めて使用していますが、いくつか問題があります。要約すると、Webflow 内に入ると、フォームからコントローラーに情報が返されないように見えます。私が見たすべての例は、パラメーターが正常にコントローラー アクションに返され、必要に応じてオブジェクトをフロー スコープに入れることができることを示しています。残念ながら、図の println は両方とも null を出力しており、params のプログラムによる出力は、予想される「testField1」と「testField2」が params オブジェクトにないことを示しています。テキスト ボックスと送信方法が一様でないことをお許しください。これらは実験の結果です。コントローラー アクション フローの簡易バージョン:

def generateProductVariantsFlow = {

    start() {
        action {
            [productInstance:Product.get(params.id)] //the entry params contains the expected id
        }
        on ("success").to("selectAttributeValues")

    }

    selectAttributeValues() {

        on("next"){TestCommand tc -> //params does not have testField1 or testField2
            println "TEST COMMAND"
            println "${tc.testField1}"
            println "${tc.testField2}"
        }.to("selectProductVariants")
        on("cancel").to("finishBeforeStart")
    }

    selectProductVariants {
        on("cancel").to("finish")
        on("previous").to("selectAttributeValues")
        on("next").to("confirmNewVariants")

    }

    //other states here

    finish {
        redirect(action:"list")
    }

    finishBeforeStart { //somewhat misleading state name, but shouldn't be relevant
        redirect(controller:"product",action:"show")
    }

}

GSP とコマンドは同じように単純です - selectAttributeValues GSP:

<%@ page import="com.castaway.rigging.Product" %>


            <g:form action="generateProductVariants">

                 <input type="integer" id="testField1" name="testField1" value="test1" />
                 <g:textField name="testField2" value="test2"/>

                <div class="buttons">
                    <span class="button"><g:actionSubmit class="cancel" name="cancel" value="Cancel"/></span>
                    <g:link action="generateProductVariants" event="next" >Next</g:link>
                </div>
            </g:form>
    </div>
</body>

指示:

class TestCommand implements Serializable {
        def testField1
        def testField2
    }
4

1 に答える 1

2

送信ボタンの代わりにリンクを使用して次のイベントをトリガーするのはなぜですか?

そのリンクをクリックすると、フォームフィールドを含まないGETリクエストが実行されます。

次のイベントをトリガーするには、送信ボタンを使用する必要があります。

乾杯

リー

于 2010-03-03T04:35:08.387 に答える