7

init (@PostConstruct) でリクエスト URL の値にアクセスし、それらを有効期間内に保存するビュー スコープ Bean があります

http requestから値を取得するには、次のコードが必要であることを学びました。

@ManagedProperty("#{param.x}")
private int x;

これにより、属性 X の値が得られます。ただし、そのトリックは、リクエスト スコープの Bean でのみ実行できます。@ManagedProperty を介してこの Bean を自分の Bean に注入しても機能しません。では、ビュー スコープ Bean でその Bean にアクセスするにはどうすればよいでしょうか。

4

2 に答える 2

9

ビューで使用<f:viewParam>します。

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

追加の利点は、きめ細かい変換と検証が可能になることです。

ポストコンストラクト中は設定値を使用できないことに注意してください。そのため、値に基づいて初期化を実行したい場合は、コンバーターまたは preRenderView リスナーのいずれかを使用してください。

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

于 2012-11-21T17:00:25.897 に答える
1

私は同じ問題を抱えていました.からプログラムで値を取得することで成功しましたFacesContext:

@PostConstruct
public void init() {
    String value = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(key);
}
于 2012-11-21T14:56:19.567 に答える