我有一个带有 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/