7

我有视图范围的bean,它应该在 init (@PostConstruct) 上访问来自请求 URL 的值并将它们存储在其生命周期内。

我了解到,为了从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 回答