无法在流程图中创建输入集的多个实例

时间:2013-02-05 15:32:48

标签: primefaces persistence spring-webflow

我有输入类型,它的值在flowScope中设置。

<input name="myItem" required="false" value="flowScope.myItem"/>

我正在创建一个MyOtherItem列表并将其发送到这样的控制器方法:

<evaluate expression="myController.save(myOtherItemDataModel.selectedRows,myItem)" result="flowScope.myItem"/>

在MyController中,我有方法保存,我希望通过从myOtherItemList获取数据来保存myItem的多个实例。

public MyItem save(MyOtherItem[] myOtherItem,MyItem myItem){
    for(int i=0; i<myOtherItem.length; i++){
        myItem.setData(myOtherItem[i].getData());
        saveMyItem(myItem);
    }
    return myItem;
}

在saveMyItem方法中,我持久化MyItem对象

public void saveMyItem(MyItem myItem) {
    entityManager.persist(myItem);
}

这里entityManager是javax.persistence.EntityManager类的一个实例。

我的问题是我在数据库中只保存了一个条目,而save方法中的循环运行了多次。原因是它没有创建MyItem的新实例,只是覆盖了旧实例的数据。有谁知道我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我不明白为什么你需要将MyItem传递给控制器​​方法 我不明白你试图返回哪个myItem,因为你似乎想要保存它们......

也许你应该使用类似的东西:

public List<MyItem> save(MyOtherItem[] myOtherItem){
   List<MyItem> result = new ArrayList<MyItem>(); 
   for(int i=0; i<myOtherItem.length; i++){
        MyItem myItem = new MyItem();
        myItem.setData(myOtherItem[i].getData());
        saveMyItem(myItem);
        result.add(myItem);
    }
    return myItem;
}