Grails 1.1 GSP 数据绑定和验证

在 开始和结束状态 部分, 开始状态的第一个示例触发一个切换到 enterPersonalDetails状态。

这个状态渲染一个视图,并等待用户键入请求信息 :enterPersonalDetails { on("submit").to "enterShipping" on("return").to "showCart" }一个视图包含一个带有两个提交按钮的表格,每个都触发提交事件或返回事件:[code]<g:form action=“shoppingCart”>

<g:submitButton name=“submit” value=“Continue”></g:submitButton>
<g:submitButton name=“return” value=“Back”></g:submitButton>
</g:form>[/code]然而,怎么样捕捉被表格提交的信息?为了捕捉表格信息我们可以使用流切换操作:enterPersonalDetails { on("submit") { flow.person = new Person(params) !flow.person.validate() ? error() : success() }.to "enterShipping" on("return").to "showCart" }注意,我们是怎样执行来自请求参数的绑定,把Person实体放置于流(flow)作用域中。

同样有趣的是,我们执行 验证,并在验证失败是调用error()方法 .这个流(flow)的动机即停止切换并返回 enterPersonalDetails 视图,因此,有效的项通过user进入,否则,切换继续并转到enterShipping state.

就像正规操作(action),流(flow)操作(action)也支持 命令对象概念,通过定义闭包的第一个参数 :enterPersonalDetails { on("submit") { PersonDetailsCommand cmd -> flow.personDetails = cmd !flow.personDetails.validate() ? error() : success() }.to "enterShipping" on("return").to "showCart" }