問題タブ [conversation-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.
java - JSF - t:saveState x @ConversationScope
セッションを使用せずに一時的に JSF アプリケーションの状態を保存する方法について:
別の方法は、Apache Tomahawk ライブラリの t:saveState を使用することです。最近の別の代替手段は、CDI @ConversationScope を使用することです。
t:saveState x @ConversationScope
それぞれの長所と短所は何ですか? どちらを使用しますか?その理由は?
メモリ消費(セッションで消費されるスペースと時間)については、 @ConversationScope の方が優れていますか?
ステートレス JSF xt:saveState
JSF 2.2 では、ステートレスで実行される可能性があります。コンポーネント ツリーは永続化されていないため、t:saveState は機能しません。それが正しいか?!
JSF 1.2 から JSF 2.x に移行するアプリがあります。t:saveStave を使用したビューがたくさんあります。
現在、セッション サイズが大きくなりすぎています。これは、主にセッション レプリケーションの問題です。
t:saveState を @ConversationScope に置き換える価値はありますか?
更新: ほとんどのユース ケースはフロー (ウィザードなど) です。したがって、@ViewScope を適用できませんでした。
java - 読み込まれたレコードがビューに表示されない
比較的単純にするために、テーブル構造でデータベースレコードを表すことになっているいくつかのPrimefaces-Pageがあります。
これらのレコードは、バッキング BeanList<Customer>
に存在するに保持します。リストがデータベース(hibernate db FWIW)からのレコードで正しく埋め@ConversationScoped
られることをデバッグで確認しました。これは、「businessInterface」ディストリビューター クラスの助けを借りて実現されます。これは、実際には (データベース) サービス クラスの分離マスクにすぎません。
前述のように、データベースとディストリビューターが期待値を正しく返すことを確認しました。残念ながら、ビューにはレコードが存在せず、代わりにemptyMessage
が表示されます。
アプリケーションは jBoss 7.1.1-Final Application Server で実行されています。
読みやすくするために、提供されたコードの周りの、、h:head
、を除外し、列を 2 つの異なる使用法 (プロパティの表示とアクションの説明) に短縮しました。h:body
ui:composition
ui:define
h:form
ビュー (短縮および切り捨て):
バッキング Bean:
にバッキング Bean があったとき、これは機能し@SessionScoped
ていましたが、直感的な (そして期待される) 動作を生成するにはハック的な回避策が必要だったため、バッキング Bean をより小さなスコープに移動することにしました。したがって@ConversationScoped
、BackingBean はリクエストのライフサイクルよりも長く滞在する必要があるため、を選択しました... (また、リクエストごとにデータベースに対してクエリを実行するのは非常に高価です...)
CustomerEditController
とについて簡単に説明しCustomerDetailsController
ます。これらは、ボタンの 1 つをクリックして要求された場合に、単一のレコードに関する詳細情報を編集および表示する責任があります。
動作しないものは@PostConstruct public void fillCustomerList()
. 他のすべては期待どおりに機能します...
さらに情報が必要な場合は、お尋ねください。必要に応じてコンテキストを提供します;)
java - 複合キーを使用してエンティティを永続化できません
複合主キーを持つエンティティを永続化しようとしています.これは私の従業員エンティティです
これは私の評価クラスです:
AND THIS IS MY EvaluationEvaluator クラスです。これは複合キーを使用するクラスです。
これは EvaluationEvaluatorsId クラスです。
これが私の保存方法です
永続化しようとすると、次の例外が発生します。
これはスタックトレースです:
jsf - Omnifaces Faces.redirect が会話スコープを失う
org.omnifaces.util.Faces#redirect と会話スコープ Bean に問題があります。
ボタンがあります
これは、会話スコープ Bean: createHandler の初期化後に、同じ会話スコープ内で createCar ページへのナビゲーションを実行する必要があります。
NavigationHandler#gotoCreateCar では、Faces.redirect(createCarPage) を呼び出すだけです。
このようにすると、パラメーター cid が転送されず、会話が失われます。
faces-config.xml でナビゲーション ルールを定義すると、次のようになります。
NavigationHandler#gotoCreateCar では、必要な結果を返すだけで、正常に動作します。
この 2 つのナビゲーション アプローチの違いの詳細をすべて理解していない可能性があります。誰かが問題を理解するのを手伝ってくれれば幸いです。
ありがとう!
jsf - @ConversationScoped は、フォームのフィルタリングと並べ替えのオプションを台無しにしています。@ViewScoped は正常に動作します
私は小さなコース合格プロジェクトに取り組んでいますが、問題があります。
manager.xhtml は JSF ページであり、データベースからのデータの表示、並べ替え、フィルタリング、エントリの削除、およびそれらのエントリの編集に使用されます。Manager.java で @ViewScoped を使用している場合、編集部分を除くすべてが正常に動作します。「編集」リンクは、ユーザーを別のページ (edit.xhtml) に送ります。@ConversationScoped を使用して、manager.xhml から送信されたデータを edit.xhtml で読み取れるようにした後。@ConversationScoped を使用した後、エントリ編集オプションは問題なく機能しましたが、一部のフィルタリング/並べ替えオプションでエラーが発生し始めました.CATEGORYで並べ替えると、「名前がnullです」などのエラーが発生し始め、価格でフィルタリングします.同じ.
これがコードです。
manager.xhtml
@ConversationScoped を使用しているときに問題が発生し始めるフォームは次のとおりです
edit.xhtml
編集フォーム - @ConversationScoped を使用する場合にのみ、選択したエントリのデータが入力されます。
manager.xhtml から送信された ID を取得する
フォームでは、データは次のようにマネージャーから取得されます。
変更を保存するボタン:
Manager.java - 不要なコードが削除されました。
ゲッターとセッターが削除されました...
}
jsf - 会話スコープが変数値を格納せず、範囲外のインデックスをスローする理由
だから、私は基本的にチームを作るフォームを持っています
これで、リストからチーム名、説明、プロジェクトが取得されます。次に、複数の行を選択するオプションを備えたデータテーブルを持つダイアログボックスを開くボタンと、リストを送信して変数に保存する送信ボタンをクリックすると、モーダルボックスの背後にあるフォームをクリックして、データ全体を一度に。
私のaddTeamメソッドでは、基本的にSystem.out.println(selectedUsers[0].getId());
NULLポインタ例外をスローします。
私check()
の会話では、基本的にconversation.begin()