Richfaces 3.3 extendedDataTable onRowClick是从上一行单击设置数据

时间:2013-03-26 20:07:39

标签: java jsf richfaces jsf-1.2

我有一个带有a4j:support标签的数据表,所以当有人点击一行时,我想根据所选行的状态显示或隐藏某些按钮。

问题是我的支持bean中的数据始终只有一次点击。

<rich:extendedDataTable
    id="formSummaryTableId"
    var="dataSummary"
    value="#{FormSearch.summaries}"
    binding="#{FormBacking.table}"
    selection="#{FormSearch.selection}"
    rowKeyVar="rkv"
    frozenColCount="0"
    sortMode="single" height="500px" width="795px"
    cellpadding="0" cellspacing="0" border="0" rowClasses="even, odd"
    selectedClass="itemSelected">

    <a4j:support event="onRowClick" actionListener="#{FormBacking.onClickForm}"
        reRender="DesignerForm:formEditToolbar" />
....

FormBacking.onClickForm

public void onClickForm(ActionEvent e) 
{
    Iterator<Object> selectionKeys = getFormSearch().getSelection().getKeys();
    LOG.info("selectionKeys = "+selectionKeys.hasNext());
    if (selectionKeys.hasNext())
    {
        LOG.info("selectionKeys.next()");
        Integer lookupKey = (Integer) selectionKeys.next();
        LOG.info("lookupKey = "+lookupKey);
    } else {
        LOG.info("THERE is no keys");
    }
}

编辑

我已经发现,出于某种原因,当我点击一行时,它没有正确设置。这就像是我点击后面的一步。例如,如果我单击我的数据表的第1行,我的方法进入“没有键”,但如果我现在单击第2行,我的方法有我点击的第一行的键。

为什么一次点击后面?

1 个答案:

答案 0 :(得分:1)

使用onselectionchange事件:

<a4j:support event="onselectionchange" ...

我想onRowClick的问题是它会在选择更改发生之前被触发,因此它会提交上一个选择值。