如何在托管bean中设置或注入请求参数?

我正在使用一些PrimeFaces

来调用页面上的各种动作侦听器。 在javascript调用中,我正在传递参数。 这些参数到达请求参数映射。

现在,我可以在动作侦听器本身中从地图中提取参数。 然而,我想要的是动作听众不必这样做。 相反,他们应该只检查bean中的适当值是否为null并相应地采取行动。

我想要在单个事件中集中这个,或者更好的是,请求参数值以某种方式自动注入到bean中。

所以我的问题是:

  1. 在调用任何动作侦听器之前,是否有可以处理的事件类型来处理请求参数?
  2. 更好的是,有没有办法自动将请求参数注入bean属性?

如果托管bean是请求作用域,那么您可以使用@ManagedProperty 。 请求参数映射已在#{param}可用的EL上下文中。

 @ManagedProperty("#{param.foo}") private String foo; 

如果托管bean的范围更广,则不能使用@ManagedProperty 。 但是,如果您正在使用CDI或可以使用它,那么您可以为此添加注释。

 @Inject @HttpParam private String foo; 

标记是更广泛范围内的JSF托管bean的替代方法。 我只能从经验中判断出它是否可以与结合使用,但理论上它应该能够正常工作。 另请参见ViewParam与@ManagedProperty(value =“#{param.id}”) 。