リンクをたどるjqueryウェイポイントとjsfを使用して無限スクロールを実装しています。無限スクロールが必要な xhtml の 1 つを prerender しました。ここで、ウェイポイントが ajax リクエストを送信するので、スクロールごとに prerender を呼び出しているのはなぜですか。これは、ページ全体が更新されていることを意味します。これを解決する方法を教えてください。
質問する
5406 次
1 に答える
13
preRenderView
ビューの構築中にイベントが1回だけ呼び出され、同じビューの後続のリクエストでは呼び出されないと考えているようです。これは真実ではありません。イベントは、ビューのレンダリングのpreRenderView
直前に呼び出されます。ビューはリクエストごとにレンダリングされます。これには ajax リクエストも含まれます (他にどのように ajax リクエストに必要な HTML 出力を生成する必要がありますか?)。したがって、あなたが見ている動作は完全に期待されています。仕事に間違ったツールを使用しているだけです。
Beanの@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.
}
}
以下も参照してください。
于 2013-11-14T11:15:10.927 に答える