Primefaces 挑选名单失去价值

Primefaces 挑选名单失去价值,primefaces,picklist,Primefaces,Picklist,我有一个简单的持久对象(Hibernate,如果它有什么不同的话): @实体 类对象A { 私人长id; 私有字符串名称; 私有字符串描述; private List children=new LinkedList(); ... ... ... public org.primefaces.model.DualListModel getDualList(){ org.primefaces.model.DualListModel l=新的org.primefaces.model.DualListMo

我有一个简单的持久对象(Hibernate,如果它有什么不同的话):

@实体
类对象A
{
私人长id;
私有字符串名称;
私有字符串描述;
private List children=new LinkedList();
...
...
...
public org.primefaces.model.DualListModel getDualList(){
org.primefaces.model.DualListModel l=新的org.primefaces.model.DualListModel();
l、 setSource(这个是children);
l、 setTarget(database.getAllChildren());//执行数据库查询以检索未正确链接到任何objectA的所有objectA。
...
返回l;
}
public setDualList(org.primefaces.model.DualListModel l){
this.children=l.getSource();
...
}
}
PrimeFaces代码如下所示(相关代码段):

。。。
... 
...
有联系的儿童
无血缘关系的儿童
managedBeanA.HandletTransfer所做的只是持久化传递的对象

一切似乎都很顺利,我可以展开行并调用getDualList。当我展开另一行时,另一个getDualList被调用-如预期的那样

当我将项目从源移动到目标时,会调用managedBeanA.HandletTransfer,并将相关对象持久化到数据库中

然而,问题是,当表被更新时,无论是表单提交还是ajax,我都可以看到p:dataTable中的每一项都调用了setDualList,其中getSource为空,这实质上破坏了以前保存的所有链接(即this.children=null)。以前链接的ObjectA对象仍在数据库中,但它们不再链接


有什么想法吗?

我已经找到了解决问题的办法。这可能只是一个解决方法,因为我不确定问题到底是什么-在setDualList方法中,我添加了以下行:

if (l.getSource().isEmpty() && l.getTarget().isEmpty()) return;
这解决了我所有的问题(问题的症状是调用setter时没有值)

...
<p:dataTable id="table" value="#{managedBeanA.getAllObjects}" var="iterator" paginator="true" rows="10" >
    ... 
    ...
    <p:rowExpansion>
        <p:pickList value="#{iterator.dualList}" var="l" itemLabel="#{l.name}" itemValue="#{requirement.id}">
            <f:facet name="sourceCaption">Linked Children</f:facet> 
            <f:facet name="targetCaption">Unlinked Children</f:facet>
            <p:ajax event="transfer" listener="#{managedBeanA.handleTransfer(iterator)}"/>
        </p:pickList>
    </p:rowExpansion>
</p:dataTable>
if (l.getSource().isEmpty() && l.getTarget().isEmpty()) return;