如何从视图中获得的请求参数作用域JSF豆?(How to get request parameter

2019-08-03 00:54发布

认为范围的bean应该从请求URL上的init(@PostConstruct)访问值,并将其生命周期内存储。

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

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

这给了我的属性X的值。然而,我所能做的只有在请求范围豆那套把戏。 通过注射@ManagedProperty这个bean到我的豆也将无法正常工作。 那么,如何获得访问该bean鉴于作用域bean?

Answer 1:

使用<f:viewParam>在视图中。

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

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

需要注意的是postconstruct在设定值不可用。 所以,如果你想进行基于价值的初始化,使用一个转换器或preRenderView听众。

也可以看看:

  • ViewParam VS @ManagedProperty(值= “#{param.id}”)


Answer 2:

我有同样的问题,我已经从编程检索值过成功FacesContext

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


文章来源: How to get request parameters from view scoped JSF bean?