問題タブ [view-scope]
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.
jsf - jsfのビュースコープでAjaxがサポートされていません
私はjsfが初めてです。ajax と viewscope Bean での作業に問題がありました。
これが私のコードです:
index.xhtml:
Bean2.java
このページには、2 つの入力ボックスとコマンド ボタン "Test" が表示されます。最初の入力ボックスに値を入力して [テスト] をクリックしても、何も起こりません (エラーも発生しません)。
しかし、私がBeanをSessionscopedとして作成すると、正常に動作します。
これを案内してください。
jsf - アプリケーション スコープ Bean のセッターが値の設定に失敗する
フォーム全体を送信する前に画像を ajax アップロードしてプレビューする機能を備えたフォームで Primefaces を使用してページを作成しています。
これを達成するために、メインフォームの外側にダイアログを作成しました:
メインフォーム内にはp:graphicImage
、アップロードしたばかりの画像を表示するコンポーネントと、ダイアログを表示するボタンがあります。ページはビュー スコープ Bean ( PageBean
) によってサポートされていますが、値 Bean に渡すStreamedContent
にp:graphicImage
は、セッション スコープまたはアプリケーション スコープである必要があります (メソッドが複数回呼び出されるため)。ImageBean
そこで、この目的のためだけに2 つ目のアプリケーション スコープ Bean ( ) を作成しました。
のコードImageBean
:
次の部分ですfileUploadListener
。アイデアは単純です — PageBean
(フォーム送信時に後で保存するため) の対応するフィールドを設定し、 ImageBean
(部分的な更新後に表示するために) メインフォームの一部を更新します:
ここで奇妙なことが起こります。メソッド内setImage()
ではすべて問題ありません - フィールドが設定され、ゲッターは正常に動作します。しかし、その後ページを更新すると、imageBean.getImage()
内部imageBean.imageStreamedContent()
は null を返します。
より正確 — setter が呼び出されなかったか、Bean の別のインスタンスで呼び出されたかのように、古い値を返します。String
別のフィールドでチェックしました。ImageBean
コンストラクターで初期化し、ハンドラーで別の値でセッターを呼び出し、メインフォームの一部を更新しました。同じこと: コンストラクターからの古い値。
Bean のライフサイクルまたはスコープ固有の何かが欠けていると思います。それとも、このタスクを実装するためのより簡単な方法がありますか?
jquery - リッチフェイス 4 :RF ショーケースのようなデータテーブル スタイル効果がスコープ ビューで機能しない
ここに示すように、jsfデータテーブルでスタイリングを試みています:
ページの最初の読み込み時に機能しています。しかし、(前に示したリンクで説明したように) ajax 呼び出しで列を並べ替えると、スタイリングが消えます。リフレッシュすれば、スタイリングが戻ってきます。
スコープをリクエストスコープに入れた場合。スタイリングは機能していますが、関数の並べ替えは機能していません。よくわからないこと。(その現象の説明に興味があります...)
だから私はjqueryが関係していることを理解していますが、「データテーブルの値をソートするときにスタイリングが消えないようにしないでください」と伝える方法が見つかりません
おそらくreRenderと関係がありますか?
BalusC、何か考えはありますか?:)
どうもありがとう、みんな、
良い1日を。
jsf - viewscoped Bean アクションは同じビューを返すことができません
ビュー スコープ Bean に問題があります。xhtml にコマンドボタンがあり、マネージド Bean に関連付けられたアクションがあり、同じビューを再度レンダリングすることになっています。アクション メソッドは問題なく返されますが、ビューがレンダリングされず、ブラウザーで「localhost を待機しています」というメッセージが表示されたままになります。なぜか bean の @PreDestroy メソッドと、その中に注入された ejb の @PostConstruct メソッドが複数回呼び出されます (無限のようです)。Bean を Sessionscoped に変更すると、すべて正常に動作します。私はnetbeans 7.2.1を使用しており、JSFフレームワークが追加されたWebアプリケーションに取り組んでいます。
xhtml 部分:
バッキング Bean:
と ejb
この Bean は、セッション スコープではなく、ビュー スコープにする必要があります。ここでviewScopedの何が問題なのですか?
私はこの質問を見てきました: @ViewScoped Managed Bean は postback 中に何度もロードされますが、解決策がうまくいきません。
ありがとう!
jsf-2 - Bean が破棄され、新しいページをレンダリングするために POST した後、ブラウザーの更新時に @ViewScoped Bean が参照されるのはなぜですか?
まず、最近追加され、OmniFaces 1.6 でリリースされた OmniFaces CDI @ViewScoped を使用しています。アプリで OmniFaces CDI @ViewScoped を使用できることを非常に嬉しく思いますが、質問があります。
(TomEE 1.6 スナップショット) サーバー ログにいくつかの NullPointerException があることに気付きました。また、OmniFaces CDI @ViewScoped でマークされた Bean を使用/参照するページをテストしているときに、NullPointerException も経験しました。NullPointerException は、通常、次のようなことをすると発生します。
(1) CDI @ViewScoped Bean を参照/使用するページを「レンダリング」します。
(2) 「view」に存在する (PrimeFaces) commandButton/Link (以下) をクリックすると、commandButton/Link action="..." が @ViewScoped Bean の破棄を担当します。
と
(3) 上記の手順 2 の直後に、自分またはエンドユーザーが「ブラウザーの更新」 (Google Chrome の F5 キー) を実行すると、何らかの理由で、CDI @ViewScoped Bean (上記の手順 1 で参照) が再構築されます。 actionListener=#{viewScopedBean.methodToPrepareStep1View()} または action="#{viewScopedBean.methodToPrepareStep1View()}" は「ブラウザの更新」ボタン/リクエストによって「呼び出されない」ため、Bean は再構築されます...正しく。
(4) したがって、@ViewScoped Bean メンバーは「null」であり、ユーザーが「予期せず」F5 を押すか、「ブラウザーの更新」を行うと、NullPointerException が発生します。
注: 状態保存 = サーバーおよび (HTTP) フィルターは、次の方法でブラウザーに jsf/xhtml ページをキャッシュしないように指示しています (これはずっと前に、ここで stackoverflow.com で BalusC から学びました)。
また、次の他の/関連する投稿を読みました。
JSF 2.0 View Scopeの戻るボタンは安全ですか?
ウィザード パターンの JSF 2.0 で使用するスコープは?
ViewScoped は RequestScoped のように機能します - なぜですか?
これは、(2 歳の JSF 開発者として) 私の設計ミスによるものですか?
CDI @ViewScoped Bean を参照するすべての xhtml ページをテストし、上記の手順を繰り返してから、コード内のすべての場所で NullPointerException を処理する必要がありますか?これは「ブラウザーの更新」が原因ですか? これがこれを解決する唯一の方法ですか、それとも CDI @ViewScoped Bean が破棄された後のブラウザの更新によって引き起こされる NullPointerException を処理 (または回避) するためのより推奨される方法はありますか?
アドバイス/確認してください。ありがとう。
編集: (2) 上記の「正しい」説明と、この問題を再現するのに役立つコード。
jsf - @ViewScoped 使用時の java.io.NotSerializableException
JSF で使用する@ViewScoped
と、次の例外が発生します。
Bean に実装させることで解決できますSerializable
。ただし、理屈はわかりません。この例外がビュー スコープでのみ発生し、他のスコープでは発生しないのはなぜですか?