7

ビューパラメータとそれらのパラメータを処理するロードメソッドを備えた単純なjsfページがあります。

<f:metadata>
 <f:viewParam name="param1" value="#{bean.param1}"/>
 <f:viewParam name="param2" value="#{bean.param2}"/>
 <f:viewParam name="param3" value="#{bean.param3}"/>
 <f:event type="preRenderView" listener="#{bean.load()}"/>
</f:metadata>

にもいくつかの初期値を設定し@PostConstructます。これらのパラメーター (null ではない) を含む新しい場所にユーザーをリダイレクトする方法。たとえば、ユーザーはブラウザに次のように入力します。

domain.com/page.jsf

次の場所にリダイレクトされます。

domain.com/page.jsf?param1=valueA

にparam1が設定されているため@PostConstructです。

別の質問 - 同じビューを参照するページにリンクがあります:

<h:link value="clickme">
 <f:param name="param3" value="otherValue"/>
</h:link>

ユーザーが でページに入って?param1=someValueリンクをクリックすると、 にリダイレクトされまし?param3=otherValueたが、 にリダイレクトしたいです?param1=someValue&param3=otherValue。より多くのパラメーターを追加できることはわかっていますが<h:link>、すべての可能なパラメーターをすべて追加するのは難しいです<h:link>

PS。このトピックJSF 2 and Post/Redirect/Get?の BalusC ヒントを使用します。

4

1 に答える 1

13

最初の質問について:includeViewParams=trueナビゲーションケースの結果に追加できます。preRenderViewただし、メソッド内でリダイレクトを実行しているときにリダイレクトが成功することを保証することはできません。もう手遅れかもしれません。

includeViewParams2番目の質問について:の属性を<h:link>に設定できますtrue

<h:link value="clickme" includeViewParams="true">
    <f:param name="param3" value="otherValue"/>
</h:link>

includeViewParams=trueまたは、結果に追加することもできます。

<h:link value="clickme" outcome="otherPage?includeViewParams=true">
    <f:param name="param3" value="otherValue"/>
</h:link>
于 2011-08-31T13:15:26.263 に答える