Grails 1.2.1 с плагином Webflow (1.2.1) - параметры не возвращаются - PullRequest
1 голос
/ 03 марта 2010

Я впервые использую плагин webflow для Grails и испытываю некоторые трудности. Подводя итог, можно сказать, что, попав в веб-поток, никакая информация не возвращается контроллеру из формы. Все примеры, которые я рассмотрел, показывают, что параметры возвращаются в действие контроллера в обычном режиме, и тогда вы можете при необходимости помещать объекты в область действия потока. К сожалению, показанные printlns оба выводят ноль, и любой программный вывод параметров показывает, что ожидаемые 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 и Command одинаково просты - 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 Ответ

2 голосов
/ 03 марта 2010

Почему вы используете ссылку вместо кнопки отправки для запуска следующего события?

При нажатии на эту ссылку будет выполнен запрос GET, который не будет включать поля формы.

Вам нужно использовать кнопку отправки для запуска следующего события.

ура

Lee

...