Grails WebFlow noob在这里......
我的WebFlow中的一个状态接收两个需要触发相同操作的事件,然后如果该操作成功则转换到单独的状态。我的初步尝试重复了actionState
中的代码。不好。因此,经过一些反复试验后,我想出了以下内容。
state0 {
on("event1") {
flash.stateAfterNext = "state1"
}.to "actionState"
on("event2") {
flash.stateAfterNext = "state2"
}.to "actionState"
}
actionState {
action {
flow.unit = Unit.get(params.unit)
success()
}
on("success").to { flash.stateAfterNext }
on(Exception).to "home"
}
state1 { ... }
state2 { ... }
这有效但是Grails的做法很好吗?有没有更好的方法来处理这样的流分支逻辑?特别是,我应该在这里使用一个子流,如果是这样,那会是什么样的?
注意:我尝试将actionState
中的代码移动到一个单独的方法中,但由于它引用了flow
不起作用。
答案 0 :(得分:2)
像
这样的东西flow{
state0 {
on("event1") {
saveUnit(flow,params.unit)
}.to "state1"
on("event2") {
saveUnit(flow,params.unit)
}.to "state2"
}
state1{...}
state2{...}
}
private saveUnit(flow, unit){
flow.unit = Unit.get(unit)
}