Grails 1.1 GSP Web流(Flow) - 开始与结束状态

如上所述,一个流(Flow)定义了开始和结束状态。一个开始状态是当用户第一次开始一个会话(或流(Flow))。

Grails的开始流(Flow)是第一个带有代码块的方法调用。

例如:class BookController { … def shoppingCartFlow = { showCart { on("checkout").to "enterPersonalDetails" on("continueShopping").to "displayCatalogue" } … displayCatalogue { redirect(controller:"catalogue", action:"show") } displayInvoice() } }这里,showCart节点是这个流的开始状态。

因为这个showCart状态并没有定义一个操作(action)或重定向,只被视为是一个视图状态。

通过规约,指向grailsapp/views/book/shoppingCart/showCart.gsp视图 .

注意,这不像正规的控制器(controller)操作(action),这个视图被存储于与其流名字匹配的grails-app/views/book/shoppingCart目录中 .

shoppingCart流(Flow)也可能拥有两个结束状态。第一个是displayCatalogue,执行外部重定向到另一个控制器(controller)和操作(action),从而结束流(Flow)。

第二个是displayInvoice是一个最终状态,因为它根本没有任何事件,只是简单的渲染一个名为grails-app/views/book/shoppingCart/displayInvoice.gsp的视图,并在同一时间终止流(Flow).

一旦一个流(Flow)结束,它只能从开始状态重新开始,对于showCart不会来自任何其他状态.