У меня есть страница с двумя вкладками, одна вкладка - список записей, щелчок по записи переключится на вкладку Редактировать, а на вкладке Редактировать есть кнопки Сохранить и Отменить.
Теперь я нажимаю на запись № 1, делаю некоторые изменения и нажимаю кнопку «Отмена». Конечно, я не хочу проверять форму, потому что она отменена, поэтому я установил immediate="true"
на кнопку Отмена. Теперь вкладка редактирования закрыта, вернемся к списку записей. Затем я нажимаю на другую запись № 2, возникла проблема: во вкладке редактирования это все еще предыдущее содержимое записи № 1, а не запись № 2. Я проверил переменные в режиме отладки, задний компонент для формы редактирования был фактически заполнен записью # 2.
То есть, что-то сломалось после немедленной команды.
(все было хорошо до того, как я добавил валидацию и сразу же = "true".)
class FormBean {
Record activeRecord;
...
public void clickOnList() {
activeRecord = loadRecord(clickIndex);
}
public void cancelForm() {
activeRecord = null;
}
}
page.xhtml:
<h:form id="main">
...
<p:tab title="Edit" rendered="#{formBean.activeRecord != null}">
...
<p:commandButton value="Cancel"
actionListener="#{formBean.cancelForm}"
update="main" async="true" immediate="true" />
</p:tab>
</h:form>