如何在托管 bean 中设置或注入请求参数?
我使用多个 PrimeFaces
来调用页面上的各种操作侦听器。在 javascript 调用中,我传递参数。这些参数到达请求参数映射中。
现在,我可以从操作侦听器本身的映射中提取参数。然而,我希望动作监听者不必这样做。相反,他们应该只检查 bean 中的适当值是否不为 null 并采取相应的行动。
我想将其集中在单个事件中,或者更好的是,以某种方式将请求参数值自动注入到 bean 中。
所以我的问题是:
- 在调用任何操作侦听器之前,是否可以处理一个事件类型来处理请求参数?
- 更好的是,有没有办法自动将请求参数注入到 bean 属性中?
I'm using a number of PrimeFaces <p:remoteCommand/>
s to call various action listeners on a page. In the javascript calls, I'm passing parameters. These parameters arrive in the request parameter map.
Now, I can extract the parameters from the map in the action listeners themselves. What I would like, however, is for the action listeners not to have to do that. Rather, they should just check that the appropriate value in the bean is not null and act accordingly.
I want to either centralize this in a single event or, better yet, have the request parameter values automatically injected into the bean somehow.
So my question is:
- Is there an event type that I can handle to process the request parameters before any action listeners are invoked?
- Better yet, is there a way to automatically have the request parameters injected into bean properties?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果托管 bean 是请求范围的,那么您可以使用
@ManagedProperty
为此。请求参数映射已位于#{param}
可用的 EL 上下文中。如果托管 Bean 的范围更广,则不能使用
@ManagedProperty
来实现此目的。但是,如果您正在使用 CDI 或可以使用它,那么您可以自制注释为了这。更广泛范围内的 JSF 托管 bean 的替代方案是
标记。我只能根据经验判断这是否可以与
结合使用,但理论上它应该同样有效。另请参阅 ViewParam 与 @ManagedProperty(value = "#{param.id}") 。If the managed bean is request scoped, then you can use
@ManagedProperty
for this. The request parameter map is already in EL context available by#{param}
.If the managed bean is in a broader scope, then you can't use
@ManagedProperty
for this. However, if you're using CDI or can use it, then you can homegrow an annotation for this.An alternative for JSF managed beans in a broader scope is the
<f:viewParam>
tag. I can only not tell from experience if that would work in combination with<p:remoteCommand>
, but in theory it ought to just work as good. See also ViewParam vs @ManagedProperty(value = "#{param.id}").