在Web流状态中调用add方法时复制groovy列表

时间:2014-05-12 17:33:58

标签: grails

即时通讯使用webflow插件,我在启动动作状态下创建2个流量范围变量,一个作为地图,另一个作为列表,然后我在状态之间选取值,直到状态3我添加值到地图和最后将地图添加到列表中,直到这里很好,问题是当我尝试添加第二个项目时,我将第二个地图添加到列表中,所有以前的地图都被覆盖。

如果我更改,则从流程范围到会话范围映射的启动操作中创建的变量不会被覆盖。

任何想法?我想使用流量变量。谢谢你的时间

def controllerNameFlow = {
init {
  flow.items = [:]
  flow.itemsCollection = []
}
on("success").to "state1"
on("error").to "done"

state1 = {
  flow.item = "abc"
}
on("confirm").to "state2"

state2 = {
  flow.presentation = "a123"
}
on("confirm").to "state3"

state3 = {
  flow.items.put("item", flow.item)
  flow.items.put("presentation", flow.presentation)

  flow.itemsCollection.add flow.items
}
on("confirm").to "state1"
}

1 个答案:

答案 0 :(得分:0)

列表可以包含重复项目,如果您希望集合不包含重复项目,那么您应该使用Set而不是List

恰克

flow.itemsCollection = []

flow.itemsCollection = new HashSet()

希望这有帮助