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

Dan*_*lor 7 jsf scope httprequest

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

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

@ManagedProperty("#{param.x}")
private int x;
Run Code Online (Sandbox Code Playgroud)

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

Bal*_*usC 9

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

<f:metadata>
    <f:viewParam name="x" value="#{bean.x}" />
</f:metadata>
Run Code Online (Sandbox Code Playgroud)

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

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

也可以看看: