私はextendedDataTableを使用しようとしています.ここにコードの一部、xhtml部分があります:
<h:form>
<rich:extendedDataTable id="network_table" value="#{NetworkBean.availableNetworkList()}" var="network" selection="#{NetworkBean.selection}" selectionMode="single" >
<a4j:ajax execute="@form" event="selectionchange" listener="#{NetworkBean.selectionListener}"/>
<rich:column>
<f:facet name="header">Available Networks</f:facet>
<h:outputText value="#{network}"/>
</rich:column>
</rich:extendedDataTable>
<a4j:commandButton value="1" action="#{NetworkBean.availableMssList()}">
</a4j:commandButton >
</h:form>
およびバッキング Bean の一部:
private Collection<Object> selection;
private List<String> selectionItems = new ArrayList<String>();
public void selectionListener(AjaxBehaviorEvent event) {
UIExtendedDataTable dataTable = (UIExtendedDataTable) event.getComponent();
Object originalKey = dataTable.getRowKey();
selectionItems.clear();
for (Object selectionKey : selection) {
dataTable.setRowKey(selectionKey);
if (dataTable.isRowAvailable()) {
System.out.print((String) dataTable.getRowData());
selectionItems.add((String) dataTable.getRowData());
System.out.print(selectionItems);
}
}
dataTable.setRowKey(originalKey);
}
public Collection<Object> getSelection() {
return selection;
}
/**
* @param selection the selection to set
*/
public void setSelection(Collection<Object> selection) {
this.selection = selection;
}
/**
* @return the selectionItems
*/
public String getSelectionItem() {
if (selectionItems == null || selectionItems.isEmpty()) {
return null;
}
return selectionItems.get(0);
}
public List<String> getSelectionItems() {
return selectionItems;
}
/**
* @param selectionItems the selectionItems to set
*/
public void setSelectionItems(List<String> selectionItems) {
this.selectionItems = selectionItems;
}
public void availableMssList(){
System.out.print("hithere");
System.out.println(selectionItems);
}
SO 私の問題は selectionItems にあります。行をクリックすると正常に動作し、選択した行がコンソールに出力されます (リスナーに 2 つの出力が表示されます)。しかし、a4j コマンド ボタンで availableMssList メソッドを使用しようとすると、selectionItems が空のように見えます。何が問題なのですか?
助けてくれてありがとう!