Grails WebFlow DRY分支逻辑

时间:2011-01-19 20:00:04

标签: grails dry spring-webflow

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不起作用。

1 个答案:

答案 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)
}