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{
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)
}