[英]@ViewScoped @PostContruct is called upon every ajax request
[英]preRenderView is called on every ajax request
我正在使用jquery waypoints和jsf跟隨鏈接實現無限滾動。 我有一個xhtml的prerender,需要無限滾動。 現在,當waypoint發送ajax請求時,為什么每個滾動它調用prerender,這意味着整個頁面都被重新刷新。 請讓我知道如何解決這個問題。
您似乎認為preRenderView
事件在構造視圖期間僅調用一次,而不是在同一視圖上的后續請求中調用。 這是不真實的。 在渲染視圖之前調用preRenderView
事件。 視圖在每個請求上呈現。 這還包括ajax請求(如何為ajax請求生成必要的HTML輸出?)。 所以你所看到的行為是完全可以預期的。 你只是使用錯誤的工具來完成工作。
您應該使用@ViewScoped
bean的@PostConstruct
方法,
@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.
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.