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

如何从视图范围的JSFbean获取请求参数?,jsf,scope,httprequest,Jsf,Scope,Httprequest,我有一个视图范围的bean,它应该在init(@PostConstruct)上访问来自请求URL的值,并在其生命周期内存储它们 我了解到,为了从http请求中获取值,我需要以下代码: @ManagedProperty("#{param.x}") private int x; 这给了我属性X的值。然而,我只能在请求范围的bean中实现这一技巧。通过@ManagedProperty将这个bean注入我的bean也不会起作用。那么,如何在视图范围的bean中访问该bean呢?我也遇到了同样的问题,通

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

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

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

这给了我属性X的值。然而,我只能在请求范围的bean中实现这一技巧。通过@ManagedProperty将这个bean注入我的bean也不会起作用。那么,如何在视图范围的bean中访问该bean呢?

我也遇到了同样的问题,通过编程从
FacesContext
中检索值,我获得了成功:

@PostConstruct
public void init() {
    String value = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get(key);
}
在视图中使用

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

另外一个优点是,它允许细粒度的转换和验证

请注意,设置值在后期构造期间不可用。因此,如果希望基于该值执行初始化,请使用转换器或preRenderView侦听器

另见: