Primefaces:Picklist - >在一些转移后,目标列表为空,有时同时包含源列表和目标列表

时间:2015-06-25 07:01:17

标签: jsf jsf-2 primefaces

我在页面加载时在源中加载值。但是当我开始将项目从一个项目转移到另一个项目时,目标项目列表在支持bean的传输中变为空。有时它也会发生在源列表中,并且在几次或几次传输之后,它们在辅助bean中都是空的。

但是在视图中,两个方框都显示正确的值。

对于此转移问题,我无法处理所选的项目列表。我的Backing bean是Request Scope。我正在与您分享选项列表和转移方法代码。

这里有一个参考实现。

http://www.primefaces.org/showcase/ui/data/pickList.xhtml

我的选择列表代码:

    <p:pickList id="PojoPickList" value="#{mySampleBacking.myItems}" var="action" effect="bounce" itemValue="#{action}"
        itemLabel="#{action.description}" showSourceControls="true" showTargetControls="true" showCheckbox="false"
        showSourceFilter="true" showTargetFilter="true" filterMatchMode="contains" converter="entityConverter" >

        <f:facet name="sourceCaption">Available Menu</f:facet>
        <f:facet name="targetCaption">Selected Menu</f:facet>

    <!-- these events are available in 5.1.9 version. not in current 5.1 version -->

         <p:ajax event="transfer" listener="#{mySampleBacking.onTransfer}"
            update="msg PojoPickList2 displaymyItems myTargetCounter" />
      <p:ajax event="select" listener="#{mySampleBacking.onSelect}"
             />
        <p:ajax event="unselect" listener="#{mySampleBacking.onUnselect}"
            /> 
        <p:ajax event="reorder" listener="#{mySampleBacking.onReorder}"
             /> 

        <p:column style="width:25%">
            <h:outputText styleClass="ui-theme ui-theme-#{action.description}" />
        </p:column>

        <p:column style="width:75%;" >
            <h:outputText value="#{action.description}" />
        </p:column>
    </p:pickList>

我的Backing Bean转移方法代码:

public void onTransfer(TransferEvent event) {

    System.out.println("onTransfer...");
    StringBuilder builder = new StringBuilder();
    System.out.println("event.getItems().size();::: " + event.getItems().size());

    for (final Object item : event.getItems()) {
        builder.append(((Menu) item).getName()).append("<br />");
    }

    System.out.println("myItems: getSource size: " + myItems.getSource().size());
    System.out.println("myItems: getSource size: " + myItems.getTarget().size());


}

0 个答案:

没有答案