37

JSF を使用してパラメーターを送信する方法を読みましたが、ユーザーcompanyIdがログイン ページにアクセスするときに URL にパラメーターを入力するとどうなりますか? 例えば、

http://my.company.url/productName/login.faces?companyId=acme .

現在の方法では、リクエストから値を取得してセッションに設定するスクリプトレット コードが少しあります。このパラメーターは、ログイン ページから始まるルック アンド フィールを変更するため、各顧客は異なるログイン ページ ビューを持つことができます。JSFに切り替えるまではextjsを使用しています。

JSF 2またはおそらくPrimeFacesを使用してそれを行う方法はありますか?

4

4 に答える 4

61

はい。 を使用し<f:viewParam>て、リクエスト パラメータをマネージド Bean プロパティとして設定できます。

<f:metadata>
    <f:viewParam name="companyId" value="#{bean.companyId}" />
</f:metadata>

必要に応じて、<f:viewAction>(JSF 2.2+ のみ) またはを使用して Bean アクションを呼び出すことができ<f:event type="preRenderView">ます。

<f:metadata>
    <f:viewParam name="companyId" value="#{bean.companyId}" />
    <f:viewAction action="#{bean.onload}" />
</f:metadata>

使用<f:viewAction>すると、ナビゲーションの結果を返すことさえできます。

public String onload() {
    // ...

    return "somepage";
}

まだ JSF 2.2 を使用していない場合はExternalContext#redirect()、そのために使用できます。とりわけ、 preRenderView リスナー メソッドでナビゲーションを実行する方法も参照してください。

これは PrimeFaces に固有のものではないことに注意してください。これは、標準の JSF の一部にすぎません。PrimeFaces は、強化された ajax とスキン機能のサポートを提供する単なるコンポーネント ライブラリです。

以下も参照してください。

于 2012-05-23T17:00:41.890 に答える
32

URL パラメータもリクエスト パラメータとして扱うことができるため、

FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()
于 2012-05-24T19:51:09.023 に答える