【问题标题】:Richfaces 3.3 extendedDataTable onRowClick is setting data from previous row clickRichfaces 3.3 extendedDataTable onRowClick 是从前一行点击设置数据
【发布时间】:2013-03-26 20:07:38
【问题描述】:

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

问题是我的backing 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 次点击?

【问题讨论】:

  • 你是什么意思它之前重新渲染?你能澄清一下你是如何检查的吗?
  • 我指的是a4j:support标签的reRender="DesignerForm:formEditToolbar"
  • 我已经更新了我的问题。
  • 我会调试 formSearch#setSelection 方法并检查是否将正确的值作为参数传递给那里。

标签: java jsf richfaces jsf-1.2


【解决方案1】:

使用onselectionchange事件:

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

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

【讨论】:

猜你喜欢
  • 2015-08-19
  • 2011-07-23
  • 2016-04-02
  • 2012-11-02
  • 2011-07-15
  • 2015-02-07
  • 2012-02-22
  • 2012-10-10
  • 1970-01-01
相关资源
最近更新 更多