問題タブ [prerenderview]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
76018 参照

jsf - f:viewAction / preRenderView と PostConstruct をいつ使用するか?

f:viewActionページのデータを初期化するためにまたはpreRenderViewイベントを使用して、@PostConstruct注釈を使用する必要があるのはいつですか? バッキング Bean のスコープのタイプに基づいて、どちらか一方を使用する根拠はありますか。たとえば、バッキング@RequestScopedBeanが同じ効果をもたらしますか?f:viewActionpreRenderView@PostConstruct

f:viewAction または preRenderView

また

@PostConstruct

0 投票する
2 に答える
8914 参照

jsf-2 - ポストバックごとに段階的に呼び出される PreRenderView

の実行順序と回数に問題がありf:event type="preRenderView"ます。

ここでの検索中に、BalusC からの通常の回答として、これと私の問題に関連するこの投稿を見つけましたが、それでも私には 2 つの質問が残っています。

  1. f:event type="preRenderView"テンプレート ファイル (すべてのビューに適用されるユーザー状態のチェックなどの一般的なタスクを管理するため) に 1 つを配置し、各ビュー (ビュー固有の初期化を処理するため) に別のファイルを配置するとf:event type="preRenderView"、なぜビューからリスナー メソッドが呼び出されるのか疑問に思います。テンプレートからのものの前に。

  2. 提案どおりに全体を配置する<f:metadata><f:event [..] /></f:metadata>ui:define、ログインページからそのページにリダイレクトした後に2回呼び出されますが、1回だけ呼び出された後、1レベル上に配置するui:compositionと。


更新: 例

次の例は、上記の動作を示しています。

これは、すべてのビューのハンドラーで共通メソッドを呼び出すイベントtemplate_test.xhtmlのリスナーを含むテンプレート ファイルです。preRenderView

これはビュー ファイルで、ハンドラーでビュー固有のメソッドを呼び出すイベントtest.xhtmlのリスナーpreRenderViewと、ハンドラー メソッドを介してリダイレクトするコマンド ボタンも含まれています。

TestHandler.javaこれは、3 つのメソッドを含むハンドラ クラスです。

テストページをリクエストすると、Tomcat ログに次のように表示されます。

これはノーを示しています。1、ビューからのイベントハンドラーがテンプレートからのイベントハンドラーの前に呼び出され、いいえ。2、ビューからのイベント ハンドラーが 2 回呼び出されること。

また、ページがリダイレクトによって要求された場合に何が起こるかを示す 3 番目のポイント (同じページへのリダイレクトを含むボタンを含めた理由) も示しています。個々のページはさらに何度も呼び出されます。

どちらもいいえ。2 と 3 は、メタデータ セクション全体を の上に置くかui:define、URL に含まれていないビューのメタデータ セクションにダミー パラメータを追加することで回避できます。

誰かがこれらのケースの理由を教えてもらえますか?

0 投票する
2 に答える
12680 参照

jsf-2 - preRenderView リスナー メソッドでナビゲーションを実行する方法

<f:metadata>、<f:viewParam>、および <f:viewAction> は何に使用できますか?

レンダリング前のビュー イベント リスナーがあります。

次のメソッドを呼び出します。

および次のナビゲーション ルール:

ただし、ナビゲーションは実行しません。次のようにコマンドボタンを使用すると機能します。

0 投票する
1 に答える
445 参照

jsf-2 - からのデータpreRenderView イベント中にフラッシュスコープから取得されたものは、ページネーションまたはソートが実行されると失われます

私はページング可能でソート可能<p:dataTable>です:

そのデータは、イベント中にフラッシュ スコープから@ViewScopedBean に取得されます。preRenderView

ページネーションまたはソートを実行すると、データが失われます。これはどのように発生し、どうすれば解決できますか?

0 投票する
1 に答える
5406 参照

ajax - preRenderView はすべての ajax リクエストで呼び出されます

リンクをたどるjqueryウェイポイントとjsfを使用して無限スクロールを実装しています。無限スクロールが必要な xhtml の 1 つを prerender しました。ここで、ウェイポイントが ajax リクエストを送信するので、スクロールごとに prerender を呼び出しているのはなぜですか。これは、ページ全体が更新されていることを意味します。これを解決する方法を教えてください。

0 投票する
0 に答える
402 参照

ajax - commandLink をクリックすると、preRenderView が再度呼び出されます

私の facelet には、以下の commandLink があります。

これは、バッキング Bean にあるものです。

commandLink をクリックしたら、exportReport メソッドを実行したいと思います。しかし、ここで起こっていることは、メソッドを実行した後、再び preRender を実行しようとしているということです。フォーム全体を再度レンダリングしたくありません。私がここでやっている間違いは何ですか?

0 投票する
0 に答える
409 参照

redirect - JSF 2は、戻るボタンまたはURLコピーペーストの最初のページにリダイレクトします(認証は関係ありません)

自己登録を使用してアカウントを作成するために使用される JSF 2.0 アプリケーションがあります。最初のページには、名前、電子メール、uid などのフィールドがあります。一般的な登録では、確認ページ (他のカスタム ページとその間のページ) と最終的な成功ページが表示されます。各ページは、faces-redirect=true を使用して JSF でレンダリングされるため、プロセス全体で 3 ~ 4 ページ (facelets) になります。このアプリケーションでは、中間ページ/確認ページ/最終ページなどを表示するために SessionScoped バッキング Bean を使用します。登録が完了したら、セッションから SessionScope Bean をクリアし、セッションを無効にします。

問題は次のとおりです。確認ページ/中間ページなどには、ユーザーが最初のページから入力したユーザーの詳細が表示されます (バッキング Bean の EL を使用: #sessionBean.firstName など)。そのため、ユーザーがこの URL (host/appName/confirmationPage.xhtml) をブラウザーに直接入力すると、ページは空白の値で読み込まれます (ユーザーが最初のページに直接移動しなかったため)。また、登録が完了した後、ユーザーが [戻る] ボタンをクリックすると、空白の値が表示されます (no-cache がフィルター クラスで明示的に設定されているため、ここではキャッシュは使用されませんが、これは正しい動作です)。

firstName などが存在しない場合、ユーザーを強制的に最初のページに移動させるにはどうすればよいですか。つまり、ユーザーがページに到達したとき、ユーザーがこのセッションの最初のページからのみこのページに到達したことを確認しますか?

フィルター クラスを使用する必要がありますか? それとも、prerenderview イベントを使用して空白の値をチェックし、それらを最初のページにリダイレクトする必要がありますか? 認証がないため、ここには「ユーザーログイン」はありません。これは一般的なユースケースだと思います.JSFにベストプラクティスがあるかどうか知りたいです.

0 投票する
1 に答える
1395 参照

jsf - preRenderView エラーでの jsf ディスパッチ

edit.xhtml に

バッキング Bean 内

ディスパッチ時にブラウザに適切なページが表示されますが、Tomcat ログではスタックトレースを下回ります。スタックトレースを防ぐにはどうすればよいですか? 他のイベントを使用する必要がありますか? 他の方法で発送する必要がありますか?

tomcat からのスタックトレース: