問題タブ [session-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 - PhaseListenerでセッションスコープのマネージドBeanを取得する方法は?
認証と認可を管理するための Authorization Listener (PhaseListener を実装する) の設定に問題があります。
具体的には、SessionBean というセッション スコープ Bean を設定します。
そして私のsun-web.xmlでは:
login() では、ユーザー名/パスワードを制御し、成功した場合は「loggedUser」を設定します。
私の AuthorizationListener は次のとおりです。
そして、sun-web.xml で:
しかし、null pointe sessionBean.getLoggedUser() を受け取ります。したがって、AuthorizationListener がユーザーをチェックするとき、SessionBean はまだ作成されません。これが、「SessionBeanが存在しない場合は、作成してSessionMapに入れる」を追加したが、まだ機能していない理由です。
認証と承認にこのアプローチを強制的に使用する必要はありませんが、必要なのは "session.setAttribute("username", username) を避けることです。したがって、他の戦略は本当に高く評価されます。ありがとう、アンドレア
編集:BalusC が示唆したように、afterPhase メソッドを編集しました。常に null の SessionBean にまだ問題があります。
jsf - JSF vs CDI SessionScope は Statelss EJB トランザクションに奇妙な影響を与えます。誰でも説明できますか?
ステートレス セッション Bean (UserInfoService) が注入された SessionScoped マネージド Bean (UserInfoController) があります。
UserInfoController は UserInfoService を呼び出して、UserInfo レコードを更新します。UserInfoService は、適切な UserInfo レコードをロードして変更し、最後に em.flush() を呼び出します。
マネージド Bean の UserInfoController に CDI アノテーション (javax.enterprise.context.SessionScoped) のアノテーションが付けられている場合、ステートレス Bean のエンティティ マネージャーに PersistenceContextType.EXTENDED のアノテーションが付けられていない限り、ユーザー レコードは更新されません。
マネージド Bean が JSF アノテーション (javax.faces.bean.SessionScoped) でアノテーション付けされている場合、PersistenceContextType.TRANSACTION を使用すると、レコードが正常に更新されます。
誰でもこの動作を説明できますか? 呼び出し元が JSF または CDI SessionScoped マネージド Bean であるかどうかに関係なく、トランザクション境界は Stateless Bean に制限されるべきではありませんか? (TransactionAttributeType は定義されていません。デフォルトで REQUIRED に設定する必要があります)
どんな情報でも大歓迎です!ありがとう!ベン
ajax - JSF PrimeFaces / Datable への Ajax レンダリングがリストへの項目の追加に失敗する
「panelGrid」でフォームを使用して、dataTable
usingで値をレンダリングしようとしています<f:ajax>
。ただし、<h:commandButton>
送信された値を使用して送信すると、 に表示されませんdataTable
。ブラウザでスタック エラーやコンソール エラーが発生しません。
これは私のxhtml(簡略化)です:
製品カタログ:
これはビーンです(簡略化):
java - セッション スコープ Bean - マルチ ユーザー データの処理方法
さて、JSF 2.0 を使用して Web アプリケーションを作成しました。どこでもセッション スコープ Beanを使用してきたため、問題に直面しています。:( 以下の例で説明します。
dataTable にユーザーのリストがあります。ユーザーをクリックすると、そのユーザーの詳細が表示されます。ユーザー A を右クリックして をクリックするとOpen in new tab
、ユーザー A の詳細が新しいタブに表示されます。
ユーザー B を右クリックして [新しいタブで開く] をクリックすると、ユーザー B の詳細が表示されます。
ただし、タブ (ユーザー A の詳細がある場所) に移動してそのページを更新すると、ユーザー B の詳細が表示されます。
それを克服して、ページを更新しても、ユーザー B ではなくユーザー A の詳細が表示されるようにする方法.
java - Java: 同じ参照を共有しないすべての等しいオブジェクト (同じコンテキスト内) を更新するためのパターン
私のJavaアプリケーションでは、異なる場所で同じオブジェクトを複数回使用しています。つまり、これらのオブジェクトを比較すると、equals メソッドは true を返します。ここで、1 つのオブジェクトを更新し、すべてのオブジェクトに同じ変更を加えたいと考えています。そのパターンがあるかどうか知っていますか?
私の具体的なユースケースは次のとおりです。JSF、JPA、およびCDIを使用しています。ユーザーは、切り離されたエンティティ EntityA を編集できる Web ページを使用しています。ページはセッションスコープです。EntityA には EntityB への 2 つの参照があります (これも切り離されています)。これらのオブジェクトは同じにすることができます。同じ参照ではありませんが、等しい場合があります。
JSF ビューでは、選択リストからエンティティ 1 とエンティティ 2 を選択できます。これらの EntityB の詳細も表示され、ユーザーは entity1 と entity2 を個別に編集できます。ユーザーがエンティティ 1 とエンティティ 2 に同じ (等しい) エンティティ B を選択したことを除いて、すべて正常に動作します。次に、これらのオブジェクトへの参照のみが更新されます。もちろん、entity1 と entity2 は 2 つの異なる JPA エンティティであり、同じ参照ではありません。しかし、EntityB の切り離されたすべてのインスタンスに変更を配布したいと考えています。私のアプリケーションではこのような状況が何百回も発生するため、どのオブジェクトをどの状況で更新する必要があるかを気にしたくありません。自動的にそれを行う解決策が必要です。1 つのアイデアは、このセッションで使用するすべてのオブジェクトを特別なリストに保持し、リクエストが送信されて処理されるたびに、このマップを反復処理し、すべての等しいオブジェクトを変更することでした。しかし、彼の音は非常に汚いです。おそらく、すべての等しいオブジェクトを同じ参照にするためのJPA関数が組み込まれています。これが可能かどうかはわかりません。これに対する解決策はありますか?ありがとう。
jsf - @SessionScoped を @ViewScoped に変更すると、常に JDOM 例外が発生しました
1 つの jsf ページ @SessionScoped のスコープを @ViewScoped に変更したいのですが、常にこの例外が発生し、その理由がわかりません。ビルドパスと依存関係をすべて確認しました。スタック エラー:
これを回避/修正する方法を教えてくれる人がいますか?
jsf - Web フィルターでセッション スコープの JSF マネージド Bean にアクセスする
ユーザー(ユーザー名、ifLoggedなど)を追跡するためにuserSessionと呼ばれるSessionScoped Beanがあります。一部のページをフィルタリングしたいので、作成した webFilter から Bean にアクセスする必要があります。それ、どうやったら出来るの?ビーンを潜在的に見えるようにインポートすることさえ不可能のようです。
jsf - サーバーの再デプロイ後に ViewScoped
JSF 2.0 の単純なフォームに奇妙な問題があります。このフォームでは、2 つの選択を使用します。最初の選択が選択された場合、2 番目の選択は新しいオプションでリロードする必要があります。Primefaces デモ ページと同じメカニズムを使用します: Primefaces デモ ページ。私のビーンは@ViewScopedです。また、「mvn jetty:run」によって、jetty-maven プラグインでアプリを実行します。今のところ問題ありません。私のフォームはうまく機能します。
この問題は、サーバーの実行中に何かを変更すると発生し、jetty がリロードされます。その後、これらの 2 つの選択は機能しません。最初のオプションを選択すると、2 番目のオプションが応答しません。Spring Security でログアウトしてすべてのセッションをクリアする必要があり、その後フォームが機能するようになります。
Bean を@SessionScopedに変更すると、問題はなくなりました。これは正常に動作していますか?私は自分のフォームをセッションスコープにしたくありません.ViewScopedを好みます。