在 JSF 中的托管组件之间传递数据
实际上是否可以在 JSF 中的托管组件之间传递任何数据?如果是,如何实现这一目标?
有人可以提供任何样本吗?
Is it actually possible to pass any data between managed components in JSF? If yes, how to achieve this?
Could anyone provide any sample?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
有几种方法。如果托管 bean 彼此相关,最干净的方法是注入。根据 JSF 版本以及 Bean 是否由 CDI 管理,有不同的方法。
CDI
只需使用
@Inject
。换句话说,源和目标 bean 的范围并不重要,因为 CDI 在幕后注入 代理。
JSF 2.x
使用
@ManagedProperty
。在此特定示例中,其他方式不可能是可能的,因为 JSF 注入的是物理实例而不是代理实例。您只能将相同或更广泛范围的bean注入到特定范围的bean中。
JSF 1.x
在
faces-config.xml
中使用<托管属性>
。另请参阅:
There are several ways. If the managed beans are related to each other, cleanest way would be injection. There are different ways depending on JSF version and whether beans are managed by CDI.
CDI
Just use
@Inject
.Other way around can also, the scope of the source and target bean doesn't matter because CDI injects under the covers a proxy.
JSF 2.x
Use
@ManagedProperty
.Other way around is not possible in this specific example because JSF injects the physical instance and not a proxy instance. You can only inject a bean of the same or broader scope into a bean of a particular scope.
JSF 1.x
Use
<managed-property>
infaces-config.xml
.See also:
要添加到 BalusC 的答案中,如果您使用依赖注入框架(spring、guice 等),或者如果使用 JSF 2.0,您可以使用以下方法将一个托管 bean 设置到另一个托管 bean 中:(
或基于你的 DI 框架)
To add to BalusC's answer, if you are using a dependency-injection framework (spring, guice, etc.), or if using JSF 2.0, you can have one managed bean set into the other using just:
(or the appropriate annotation based on your DI framework)