我在页面加载时在源中加载值。但是当我开始将项目从一个项目转移到另一个项目时,目标项目列表在支持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());
}