2

現在表示されているタブをプログラムで設定することは可能<p:wizard>ですか?

たとえば、ウィザードを含む同じページへの 2 つの異なる要求に対して、別のタブを選択する必要があります。

私が現在やろうとしているのは、多くのタブを持つウィザードを用意することです.2番目のタブには別のページへのリダイレクトがあるので、戻ってきたらリダイレクトを引き起こした最後のステップに行きたいです.

手伝ってくれませんか ?本当にありがとうございました !

4

2 に答える 2

6

primefaces のドキュメントによると、現在使用しているウィザードのステップを指定する tagのstep属性があります。p:wizard

属性:ステップ
デフォルト値: 0
タイプ:文字列
説明:フローの現在のステップの ID

この属性をバッキング Bean の値にバインドし、リダイレクト中および復帰中に維持する必要があります。ウィザードの Bean がリダイレクトのステップでその情報を失ってしまう場合は、 view paramまたはflash scope@ViewScopedを使用して渡す必要があります。

于 2013-02-23T13:53:00.747 に答える
5

私の答えはおそらくあなたの完全な要件を満たしていないでしょうが、それにもかかわらず、あなたの問題の解決策を示すかもしれません.

私の知る限り、PrimeFaces Wizard UIComponent は1ページのワークフロー用に設計されています。これは事実上、ビュー スコープ内にあるバッキング Bean によって入力が処理されることを意味します。

このように、特定のステップでリダイレクトを行うと、ビューが変更され、古いビューが破棄されるため、すべてのデータ入力がクリアされます。

いずれにせよ、現在のタブを表示用に設定する手段は、Wizard コンポーネントの step 属性です。そう、

<p:wizard step="#{wizardBean.currentStep}" >...</p:wizard>

Bean で指定したステップをウィザードに強制的に表示させます。たとえば、次のようなビューパラメーターを使用して取得できる場合があります

<f:viewParam name="step" value="#{wizardBean.currentStep}" />

ただし、Bean の有効期間がビューの有効期間より長い場合は意味があります。たとえば、Bean をセッション スコープに入れることができます。

とはいえ、事前にログインした方がいいかもしれません。または、ウィザードのステップ 2 でそれを行うことが絶対に必要な場合は、ページ自体または一般的なウィンドウに組み込みのログイン機能を提供しますか?

また、プログラムで、コンポーネントをバッキング Bean にバインドし、バッキング Bean でステップ値を設定することによって、たとえば preRenderView イベントで、あなたが話している設定を実現できます。

于 2013-02-23T14:08:22.567 に答える