JSFを使用してパラメーターを送信する方法を読みましたが、ユーザーがログインページにアクセスするときにcompanyId
をURLに入力するとどうなりますか?例えば、
http://my.company.url/productName/login.faces?companyId = acme 。
これを行う方法として、リクエストから値を取得してセッションで設定するスクリプトレットコードが少しあります。このパラメーターは、ログインページから先にルックアンドフィールを変更するため、各顧客は異なるログインページビューを持つことができます。 JSFに切り替えるまでextjsを使用しています。
JSF 2またはおそらくPrimeFacesを使用してそれを行う方法はありますか?
はい。 _<f:viewParam>
_ を使用して、リクエストパラメータをマネージドBeanプロパティとして設定できます。
_<f:metadata>
<f:viewParam name="companyId" value="#{bean.companyId}" />
</f:metadata>
_
必要に応じて、_<f:viewAction>
_(JSF 2.2+のみ)または_<f:event type="preRenderView">
_を使用してBeanアクションを呼び出すことができます。
_<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およびスキナビリティサポートを提供するコンポーネントライブラリにすぎません。
urlパラメータはリクエストパラメータとして扱うこともできるため、
FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap()
すぐに使用できるユーティリティライブラリ OmniFaces があります。
@Inject @Param
private String key;
@Inject @Param
private Long id;