如何从视图范围的JSF bean获取请求参数?

时间:2012-11-21 14:48:29

标签: jsf scope httprequest

我有视图作用域 bean,它应该在init(@PostConstruct)上访问请求URL中的值并将其存储在其生命周期内。

我了解到,为了从 http请求获取值,我需要以下代码:

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

这给了我属性X的值。但是,我只能在请求范围的 bean中执行该操作。通过@ManagedProperty将这个bean注入我的bean也行不通。那么,如何在视图范围内的bean中访问该bean?

2 个答案:

答案 0 :(得分:9)

在视图中使用<f:viewParam>

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

其他优点是它允许细粒度转换和验证。

请注意,在postconstruct期间,设置值不可用。因此,如果您想根据值执行初始化,请使用转换器或preRenderView侦听器。

另见:

答案 1 :(得分:1)

我遇到了同样的问题,我通过FacesContext编程方式检索价值取得了成功:

@PostConstruct
public void init() {
    String value = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(key);
}