JSF + Primefaces 初心者。(JSF 2.1、Primefaces 3.4.2 を使用)
Primefaces commandButton を使用してデータをフェッチし、さまざまなフォーム コンポーネントに入力する内部 panelGroup を持つフォームがあります。partialSubmit は、まだ入力されていないフィールドの検証の問題を回避するため、うまく機能します。ページは意図したとおりに機能しますが、実装を「よりクリーン」に調整しようとしています。
私の質問は、フォームが使用しているバッキング Bean に使用している JSF スコープに関するものです。セッションスコープを使用すると、すべてがうまくいきますが、リクエストスコープを使用する場合はそうではありません. 「最終」送信 (別の p:commandButton コンポーネント経由) とこのフェッチ ボタンの両方が送信を呼び出しているため、いずれかへの応答が要求ライフサイクルの完了を構成することを理解しています。私が正しければ、(requst スコープを使用して) 以下を取得する理由が説明されています:
java.lang.IllegalStateException: Cannot create a session after the response has been commited
取得ボタンを使用する場合。
しかし、明らかにこれは、フォームが Bean を介して更新されたデータを使用するようにするだけのフェッチ要求に対する私の意図を「壊します」。
したがって、(partialSubmit="true" commandButton (デフォルトで ajax 動作が有効になっている) を介して) 中間送信を使用する設計パターンでは、少なくともセッション スコープのバッキング Bean を使用する必要があるという私の理解は正しいでしょうか? 理想的には実装リクエストとナビゲーション レベル リクエストのメカニズムにより、これらの中間サブミットを 1 つのリクエストのコンテキスト内で実行できるようになります。または、追加の調査を行う必要がありますか?私の 1.2 コピー?) MTIA でフィードバックをお寄せください。
私のフェッチコンポーネント:
<p:commandButton id="returningBtn" partialSubmit="true" value="Hit if returning"
process="nameInfo" actionListener="#{player.loadReturning}" update="registrationForm">
<p:resetInput target="registrationForm" />
</p:commandButton>
私の最終提出:
<p:commandButton tabindex="0" id="SubmitButton" value="Register"
action="#{player.register}" update="regPage"/>