У меня есть этот тип данных с тегом поддержки a4j: так что когда кто-то нажимает на строку, я хочу отображать или скрывать определенные кнопки в зависимости от состояния выбранной строки.Richfaces 3.3 extendedDataTable onRowClick устанавливает данные из предыдущей строки, нажав
Проблема в том, что данные в моем бэк-компоненте всегда находятся на одном шаге позади.
<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");
}
}
EDIT
Я понял, что по какой-то причине, когда я щелкните строку, это не получает установлен правильно. Это похоже на 1 шаг позади моих кликов. Например, если я нажимаю строку 1 моего datatable, мой метод попадает в «ТЫ НЕ КЛЮЧИ», но если я сейчас нажму строку 2, мой метод будет иметь ключи для первой строки, которую я нажал.
Почему это 1 клик позади?
Что вы имеете в виду, это повторное рендеринг раньше? Можете ли вы уточнить, как вы это проверяете? – Andrey
Я имею в виду 'reRender =" DesignerForm: formEditToolbar "из тега a4j: support. – Catfish
Я обновил свой вопрос. – Catfish