f:setpropertyactionlistener 内の datatable は現在の行を提供せず、代わりに常に最後のオブジェクトを提供します.. pls help. ありがとう!
code.xhtml
<p:dataTable id="datatableid" value="#{updateSiteObj.emsList}" var="pickListObjEMS" >
<p:column headerText="EMS">
<p:pickList id="pojoPickListEMSID" value="#{pickListObjEMS.serverList}" var="ems"
itemValue="#{ems}" itemLabel="#{ems}" style="border-color: white!important" onTransfer="ajaxSubmit1()">
<f:facet name="sourceCaption">Available</f:facet>
<f:facet name="targetCaption">To be removed</f:facet>
</p:pickList>
<p:remoteCommand action="# {updateSiteObj.onEMSTransfer}" name="ajaxSubmit1" >
<f:setPropertyActionListener value="# {pickListObjEMS}" target="#{updateSiteObj.tempObj}"/>
</p:remoteCommand>
</p:column>
</p:dataTable>
bean.java
public class UpdateSite {
/** Creates a new instance of UpdateSite */
private List<List<String>> tempEMSList = new ArrayList<List<String>>();
private List<serverList> emsList = new ArrayList<serverList>();
private serverList tempObj = new serverList();
public String updateSiteDetails() {
List<String> source = new ArrayList<String>();
List<String> target = new ArrayList<String>();
for (String[] str : sg.getEMSDetailsList()) {
source.add(str[0]);
}
DualListModel<String> tempSource = new DualListModel<String>(source, target);
serverList obj = new serverList();
obj.setServerList(tempSource);
//here i am adding two objects
emsList.add(emsobj);
}
public void onEMSTransfer() {
System.out.print("tempOBJ size:" + tempObj.getServerList().getSource().size() + "=>" + tempObj.getServerList().getTarget().size());
}
serverList は、データ型 DualListModel の変数を持つクラスです。onEMSTransfer では、ピックリストの最初のオブジェクトを操作しても、2 番目のオブジェクトが表示されていることがわかります。