带有Webflow插件的Grails 1.2.1(1.2.1) - 没有返回参数

时间:2010-03-03 00:02:29

标签: grails spring-webflow grails-plugin

我第一次使用Grails的webflow插件,但遇到了一些困难。 总而言之,一旦在Webflow中,没有信息似乎从表单返回到控制器。我查看的所有示例都表明params正常返回到控制器操作,然后您可以根据需要将对象放入流量范围。不幸的是,图示的printlns都输出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
    }

1 个答案:

答案 0 :(得分:2)

为什么使用链接而不是提交按钮来触发下一个事件?

点击该链接将执行GET请求,该请求不包含表单字段。

您需要使用提交按钮来触发下一个事件。

欢呼声