java - Richfaces 3.3 ExtendedDataTable onRowClick 正在设置上一行单击的数据

标签 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 步。例如,如果我单击数据表的第 1 行,我的方法将进入“没有键”,但如果我现在单击第 2 行,我的方法将包含我单击的第一行的键。

为什么落后1次点击?

最佳答案

使用onselectionchange事件:

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

我猜 onRowClick 的问题是它在选择更改发生之前被触发,因此它提交了以前的选择值。

关于java - Richfaces 3.3 ExtendedDataTable onRowClick 正在设置上一行单击的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15646409/

相关文章:

spring - JSF 应用程序跨用户 session 数据

jsf - 为什么将 "immediate"属性添加到 EditableValueHolders?

javascript - 未捕获类型错误 : Cannot read property 'action' of null with delayed handler

java - 用任何符号分割字符串

java - 从 HTMLDocument 获取所有 html 作为字符串

java - 大量源文件的正确文件夹结构

java - 访问android项目中的非android xml文件

java - Richfaces tabPanel 中未呈现合成

javascript - 如何使用 javascript 从 rich :calendar? 获取日期

css - 无法在 f :facet 内的列标题上应用自定义样式