如何传递选定行更改的值?

时间:2015-05-15 09:15:20

标签: jsf-2 richfaces

我有这个永久性问题,我有一个带value="#{myBean.Items}" var="itms"的数据表,我想将所选项目传递给我的bean类。

在列中,我们使用<f:setPropertyActionListener value="#{itms}" target="#{myBean.selectedrow}" />来传递值,但我想要它用于行。 怎么做?,以及把听众放在哪里?。

非常感谢。

1 个答案:

答案 0 :(得分:1)

您使用的是哪种richface版本?

对于richfaces 4.3.x,以下示例可能会起到作用:

<强> XHTML:

<rich:extendedDataTable
  id="myTable"
  value="#{crudBean.rows}"
  var="rowItem"
  rowClasses="odd-row, even-row"
  selection="#{crudBean.actionForm.selection}"
  rows="#{crudBean.actionForm.occurrences}"
  rowKeyVar="idx"
>
  <a4j:ajax event="selectionchange"
    listener="#{crudBean.actionForm.selectionListener}"
    immediate="true" />
  <rich:column width="100px" styleClass="#{rowItem.className}">
    ...stuff...
  </rich:column>
  <rich:column width="173px" styleClass="#{rowItem.className}">
    ...stuff...
  </rich:column>
</rich:extendedDataTable>

以下代码确保甚至在行选择更改时被触发:

<a4j:ajax event="selectionchange"
  listener="#{crudBean.actionForm.selectionListener}"
  immediate="true" />

豆子:

public void selectionListener(AjaxBehaviorEvent event) {
  UIExtendedDataTable currentDataTable = (UIExtendedDataTable) event.getComponent();
  Object originalKey = currentDataTable.getRowKey();

  // debug log statement
  log.debug("selectionListener() - rowKey = {} ", originalKey);
  // debug log statement
  if (log.isDebugEnabled()) {
    log.debug("\n selectionListener() - rowIndex = {}", currentDataTable.getRowIndex());
  }
  if (currentDataTable.isRowAvailable()) {
    // selectionItems.add(dataTable.getRowData());
    IDataRow rowValue = transform((IDataGridRow)currentDataTable.getRowData());
    changeActiveRow(rowValue);
  }
}