Richfaces 3.3 extendedDataTable onRowClick正在设置来自前一行单击的数据



我有一个a4j:支持标记这个数据表,这样当有人点击一行,我想显示或隐藏某些按钮基于所选行的状态。

问题是我的后台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行,我的方法有我单击的第一行的键。

为什么是我在后面?

使用onselectionchange事件:

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

我猜onRowClick的问题是,它被解雇之前选择发生变化,所以它提交以前的选择值。

最新更新