У меня есть dataTable, и в каждой строке есть commandButton, который вызывает метод из ManagedBean с текущим идентификатором элемента следующим образом:
<h:commandButton action="#{myBean.doStuff(item.id)}" value="click me"/>
Это работает довольно хорошо, за исключением того, что фаза ответа рендеринга вызывает метод doStuff снова с другим (вероятно, старым?) Идентификатором. Я посмотрел на эту проблему с помощью PhaseListener:
...stuff...
INFO: START PHASE INVOKE_APPLICATION 5
INFO: selecting item with Id: 11
INFO: selected item: new_item
INFO: END PHASE INVOKE_APPLICATION 5
INFO: START PHASE RENDER_RESPONSE 6
INFO: selecting item with Id: 3
INFO: selected item: test1
INFO: END PHASE RENDER_RESPONSE 6
...more stuff...
new_item - это то, что я хочу, а test1 - то, что я получаю.
Так почему метод doStuff вызывается на этапе ответа рендеринга и почему он использует неправильные значения?
редактировать: я использую JSF 2.0