preRenderView вызывается при каждом запросе ajax
Я реализую бесконечную прокрутку, используя jquery waypoints и jsf по следующей ссылке. У меня есть prerender для одного из xhtml, на котором требуется бесконечная прокрутка. Теперь, когда waypoint отправляет ajax-запрос, почему для каждой прокрутки он вызывает prerender, что означает, что вся страница обновляется. Пожалуйста, дайте мне знать, как решить эту проблему.
1 ответ
Вы, кажется, думаете, что preRenderView
событие вызывается только один раз во время построения представления и не вызывается при последующих запросах в том же представлении. Это неправда. preRenderView
Событие вызывается непосредственно перед отображением представления. Представление отображается при каждом запросе. Это также включает в себя запросы AJAX (как еще он должен производить необходимый вывод HTML для запросов AJAX?). Таким образом, поведение, которое вы видите, вполне ожидаемо. Вы просто использовали неправильный инструмент для работы.
Вы должны либо использовать @PostConstruct
метод @ViewScoped
фасоль,
@ManagedBean
@ViewScoped
public class Bean {
@PostConstruct
public void init() {
// Do here your thing during construction of the view.
}
// ...
}
или добавить проверку отрицания на FacesContext#isPostback()
в слушателе события предварительного рендеринга
public void preRender() {
if (!FacesContext.getCurrentInstance().isPostback()) {
// Do here your thing which should run on initial (GET) request only.
}
}