簡體   English   中英

每個ajax請求都會調用preRenderView

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM