問題タブ [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.
ajax - JSF:ui:includeと(壊れた)ビュースコープ
いくつかの一般的な要素と、さまざまなユーザーアクションに基づいて動的にロードおよび含まれる4つの部分を含むJSFページがあります。さまざまなインクルードの機能をカプセル化したBeanがあり、構造は次のようになります。
メインビューページでは、BalusCが次の質問で説明しているように、条件付きでレンダリングされた一連のh:panelGroupsを介して各インクルードが含まれています。
https://stackoverflow.com/a/9897016/945403
https://stackoverflow.com/a/7113961/945403
ビュースコープBeanには、ユーザーのアクティビティの現在の状態、ユーザーが現在表示しているアイテムなどに関するさまざまなビュー情報が含まれています。
含まれている各ビューは、ajax投稿と非ajax投稿の両方を介してさまざまなタスクを実行します。私の問題は、特定のパネルでの特定のアクションによってビュースコープが破壊されているように見え、韻や理由がないように見えることです。以下に概説する複雑なワークフローについては、事前にお詫び申し上げますが、できる限り明確にするよう努めます。
include3.xhtmlでajaxアクションを実行すると、コンポーネントはインクルード内でのみレンダリングされ、1日中実行でき、ビュースコープは残ります。ajax以外の投稿を実行すると、更新によってinclude4.xhtmlが更新されます(以前にレンダリングされなかったものが追加される可能性があります)。その後、他のインクルードのいずれかでアクションを実行できます。
include1.xhtmlでajaxアクションを実行すると、それ自体のバッキングBeanのメソッドのみが呼び出され、独自のコンポーネントのみが更新されますが、ビュースコープは残ります。include3Beanのメソッドを呼び出してinclude2.xhtmlとinclude3.xhtmlを含むdivを更新するajaxアクションを実行すると、ビュースコープは残り、include1.xhtmlでアクションを実行し続ける限り、ビュースコープは残ります。他のインクルードの1つで別のアクションを実行しようとすると、ビュースコープが破棄されます。
この時点で、問題は、アクションが呼び出されているのとは異なるインクルードを更新していることにあるに違いないと思いました。しかし、これから説明するように、これが問題(または少なくとも唯一の問題)ではないようです。
include2.xhtmlにはajaxアクションがあり、起動すると、mainViewBackingのメソッドを呼び出し、include2.xhtmlとinclude3.xhtmlを含むdivを更新します。このアクションを引き続き実行するか、include2.xhtmlで他のアクション(非ajaxアクションを含む)を実行すると、すべてが期待どおりに機能し、ビュースコープは残ります。ただし、その後include3.xhtmlでアクションを実行すると、ビュースコープが破棄されます。これがおかしくなるのは、include1.xhtmlでアクションを実行でき、必要な限りビュースコープにアクセスし続けることですが、戻ってinclude2.xhtmlまたはinclude3でアクションを実行しようとすると。 xhtml、ビュースコープが再び失われます。
私はこの時点で少し立ち往生していて、何が悪いのかを理解する方法さえわかりません。インクルードを更新(および削除または追加)すると、ビュースコープが失われると思いますが、以前にリンクされた質問から、UIの実際のsrc値として、これは問題ではないようです。 :includesは動的に生成されていません。そして、mainview.xhtmlの部分的な状態保存をオフにしています。
これらの動的に表示されるui:includesについて、ビュースコープを壊す何かがありますか?
ajax - ビュー内の注入されたセッション スコープ Bean スコープ Bean の複製
私にはViewScoped
豆があり、この豆に豆を注入していSessionScoped
ます。これには多くの情報があり、非常に簡単です。
セッション Bean
ビュービーン
フェイスレット
ここで興味深いのはtest
、チェックボックスをクリックすると更新されますが、更新されtest2
ないことです。セッション スコープの変数は更新されません。ページを更新すると、持っていたすべての情報が失われます#{displayResults.followingBean.followingThese}
編集:セッション変数は、「注入されたセッション変数」のみのajax呼び出しで更新されません
上記のコードに変更javax.faces.STATE_SAVING_METHOD
すると動作しますが、 onの場合は何もありません。Beanを介して保存されたすべての「セッション」情報が失われます。server
client
ViewScoped
編集 言及するのを忘れました。Glassfish 3.1.2.2 で JSF (Majorra) 2.1.6 を使用する (これで問題が解決することを期待して、すべてを更新しました)。
編集 #2 上記のコードを使用してインポートの完全なリストを追加しました。
追加情報RequestScoped
あちこちでいくつかのことを試した後、受信 Bean をOR
に設定すると、探している機能は問題なく動作しSessionScoped
ます。に設定すると動作しませんViewScoped
。これはすべて素晴らしいことですが、ビュー スコープから必要な他の機能が必要であり、Bean をセッション スコープに設定する意味がありません。
どんな助けでも大歓迎です。
編集 3
これはJIRAのバグとして記録されています
java - Java EE 6 - ViewScoped & Session Bean の @PreDestroy が呼び出されない
このトピックで書いたように、ユーザーがページを閉じたり変更したりするときに何らかのアクションを呼び出す必要があります。@PreDestroy
ビューでスコープ Bean を使用できると思っていましたが、呼び出されることはありません (セッションが期限切れになった場合でも)。これはバグですか?Glassfish 3.1.2 を使用しています。
ユーザーがページを離れたときに Bean メソッドを呼び出すにはどうすればよいですか? JavaScriptはwindow.onunload
良い考えですか?
jsf - 動的フォーム フィールドの追加中のエラー
動的フォーム フィールドを jsf フォームに追加しようとしています。しかし、単純なコードに従ってもエラーが発生します。
test.xhtml
フィールド.java
パッケージエンティティ;
パブリック クラス フィールド {
}
testBean.java
上記の私のコードでは、「java.io.NotSerializableException: Entity.Field」エラーが発生します。
Field クラスを Serializable にすると、再びエラーが発生します。
私の単純なコードの何が問題になっていますか? 前もって感謝します
spring - Spring の JSF View スコープ
@ViewScoped
Spring 3.0 にJSF のようなスコープはありますか? バッキング Bean が Spring によって管理される JSF+Spring を使用するアプリケーションがあります。Spring の JSF wiew スコープのようなスコープは見つかりませんでした。Porting JSF 2.0's ViewScope to Spring 3.0というブログを見ましたが、うまくいきませんでした。
カスタムSpringスコープでの私の試みは次のとおりです。
application-context.xml
:
jsf - セッション終了時にビュースコープのBeanを破棄する
私の質問はこれ(そしておそらく他の人)に関連しています:
@PreDestroyが@ViewScopedで呼び出されることはありません
そこに述べられているように、ナビゲーション時にビュースコープのBeanを破棄するという簡単な解決策はなく、セッションが期限切れになったときにも同じことが当てはまるようです。
JSFビュースコープのBeanをリリースする(メソッドを呼び出す)ための重要なアプローチは@PreDestroy
どのようになりますか、より具体的には、セッションが期限切れになるとすぐになりますか?
GlassFish3.1.2でJavaEE6とMojarra2.1.xを使用しています。
jsf-2 - リンクされた ViewScoped Bean がメモリ リークを引き起こす
JBoss 7.1.1 の JavaEE6 プロジェクト (EJB3、JSF2) では、@ViewScoped Bean でメモリ リークが発生しているようです。最後の 3 日間、私はこの問題の調査に時間を費やしました。したがって、最初のページが @ViewScoped Bean を離れた後に解放されることを保証するために、2 つのページを持つ単純なプロジェクトを作成しました。
TreeBean.java
first.xhtml
second.xhtml
シスアウト:
そして、他の @ViewScoped Bean に依存関係を追加するまで、すべての考えがうまくいきました
TreeBean.java
TreeNodeBean.java
その後、ビーンは1つもリリースされていません。誰かがそれに対処する方法を知っていますか?これはバグですか、それともどこかで構成されている可能性がありますか?
jsf - 「ターゲットに到達できません。識別子 'bean' が null に解決されました」を修正するには?
@ViewScoped にアクセスするために、JSF 2.1.7 と Primefaces 3.2、CDI、および Apache MyFaces CODI を使用しています。
すべてが問題なく動作していますが、ui:param を介して Bean を別のページに渡し、その Bean を特に ap:ajax 要求で使用しようとすると、「ターゲットに到達できません。識別子 'bean' が解決されました。ヌル"
次に、page.xhtml でこれを実行しようとします。
bean.simpleModel への最初の呼び出しは適切に解決されます。bean.onMarkerDrag への ajax 呼び出しはそうではありません。
formBean の私の宣言は @Named("formBean"), @ViewScoped です。
何か案は?
jsf-2 - 動的列に複数のヘッダーがあるJSF2DataTable
JSF2.1とPrimeFaces3.4を使用してデータ中心のWebアプリケーションを開発しています。
特定のクエリの結果として、いくつかの動的列を含む2次元データテーブルに結果を表示する必要があります(一種のピボットテーブルを想像してください)。現在、いくつかの標準タグと動的に作成された列
にを使用してPrimeFacesを使用しています。テーブルはマネージドBeanによってサポートされています。正常に動作しますが、次のようになります。 <p:dataTable>
<p:column>
<p:columns>
@ViewScoped
- ピボットテーブルと同じように、いくつかのフィールドをグループ化するために、複数のヘッダーも表示する必要があります。残念ながら、(サイズ変更などの他の多くの機能とも)
<p:columns>
互換性がありません<p:columnGroup>
- カスタムの小計行を表示する必要があります(これを行う方法はありますか?)
プログラムで全体を実装することを考えていましたが、 JSF問題1492のため、Beanで<p:dataTable>
使用できません。binding="#{...}"
@ViewScoped
jsf - ビューを JSF に保存する
JSF ページのビュー ステートの取得に関して質問があります。ユーザーがリスト内の人を検索できるアプリケーションがあり、ユーザーが「表示」ボタンを押すと、同じJSFページにさまざまな人のリストが表示されます。person の 1 人を選択すると、別の JSF ページが表示され、その人物に関するより詳細な情報が表示されます。そのページに「キャンセル/中止」ボタンが表示されます。私が達成したいのは、その特定の「キャンセル/中止」ボタンを押すと、ページがリダイレクトされ、表示されたリストでJSFページに戻る必要があるため、何らかの方法で「ビューステート」を保存する必要があることです(私は仮定します)しかし、私はそれがどのように行われるのかわかりません... 誰かがこの種の問題を何らかの方法で解決できたかどうかを確認したかっただけです.. ? (上記のJSF検索ページは、追加情報としてviewscopedとして宣言されています)
すべての助けをありがとう..