Я использую PrimeFaces с JSF 2.0, у меня есть такая раскладка:
<h:panelGroup layout="block" id="panelGroup" binding="#{bean.boundPg}" />
<p:commandButton value="Update" action="#{bean.updateMe}" update="panelGroup" />
, в которой боб равен SessionBean
.Используя log4j для отладки, я обнаружил, что процесс привязки вызывается getBoundPg
перед выполнением действия updateMe
.Таким образом, представление всегда устарело.
Знаете ли вы, почему и как отменить этот порядок?Спасибо!
------------- Редактировать ---------------
Я делаю веб-приложениедля игры-викторины.
<h:panelGroup layout="block" id="pgContents" binding="#{bean.boundContents}" />
<p:commandButton value="Prev page" action="#{bean.prevPage}" update="pgContents" />
<p:commandButton value="Next page" action="#{bean.nextPage}" update="pgContents" />
pgContents
содержит много h:pannelGroup
с, каждая подгруппа содержит метку, показывающую содержание викторины, h:inputText
, чтобы игрок дал ответ.По некоторым причинам мне пришлось генерировать потомков pgContents
программно.
Кнопки Prev page
и Next page
будут извлекать предыдущую / следующую группу викторины
Ниже приведенаbean (методы получения и установки пропускаются)
@ManagedBean(name = "bean")
@SessionScoped
public class LessonHelper {
private int currentPage;
private HtmlPanelGroup boundContents;
public void prevPage() {
// decrease currentPage
// fetch contents
// add children for boundContents (label, inputText)
}
// nextPage() is similar
}
Моя проблема в том, что, когда я нажимаю кнопку Prev / Next, метод получения getBoundContents
сначала вызывается в процессе привязки, а prevPage()/nextPage()
вызываетсяпозже, что делает содержание всегда устаревшим.