首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PickList损失价值

PickList损失价值
EN

Stack Overflow用户
提问于 2017-02-13 09:17:29
回答 1查看 331关注 0票数 0

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

代码语言:javascript
复制
@Entity
Class ObjectA

{
    private Long id;
    private String name;
    private String description;
    private List<ObjectA> children = new LinkedList<>();

    ...
    ...
    ...
    public org.primefaces.model.DualListModel<ObjectA> getDualList() {
        org.primefaces.model.DualListModel<ObjectA> l = new org.primefaces.model.DualListModel<>();
        l.setSource(this.children);
        l.setTarget(database.getAllChildren()); // performs database query to retrieve all objectA that are not corrently linked to any objectA.
        ...
        return l;
    }

    public setDualList(org.primefaces.model.DualListModel<ObjectA> l) {
        this.children = l.getSource();
        ...
    }

}

PrimeFaces代码看起来像(相关的代码片段):

代码语言:javascript
复制
...
<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>

managedBeanA.handleTransfer所做的仅仅是持久化传递的对象。

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

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

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

你知道是怎么回事吗?

EN

回答 1

Stack Overflow用户

发布于 2017-02-13 10:21:48

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

代码语言:javascript
复制
if (l.getSource().isEmpty() && l.getTarget().isEmpty()) return;

它解决了我的所有问题(因为问题的症状是调用setter时没有值)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42195293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档