Процесс связывания происходит до того, как действие будет выполнено в JSF 2 - PullRequest
0 голосов
/ 22 декабря 2011

Я использую 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() вызываетсяпозже, что делает содержание всегда устаревшим.

1 Ответ

1 голос
/ 22 декабря 2011

Поскольку это естественный путь, как вы можете видеть в этом замечательном уроке BalusC: http://balusc.blogspot.com/2006/09/debug-jsf-lifecycle.html

Скажите мне точно, что вы хотите сделать, покажите, что находится внутри этого боба, и решение вашейпроблема будет найдена!

...