繁体   English   中英

JSF2 ManagedBeans生命周期

[英]JSF2 ManagedBeans Lifecycle

我对JSF及其ManagedBeans有一个基本问题。 想象一下,我们已经设置了一个ManagedBean,它只包含我看来的数据:

@ManagedBean(name = "dataBean")
@SessionScoped
public class DataBean {

接下来是我的具有依赖项注入的控制器,用于将控制器与模型连接:

@ManagedBean
@RequestScoped
public class Controller {
  @ManagedProperty(value = "#{dataBean}")
  private DataBean dataBean;

现在,让我们考虑一个控制器中的几个ManagedBean:是否可以将另一个ManagedBean注入到控制器中,如下所示:

@ManagedProperty(value = "#{dataBean}")
private DataBean dataBean;
@ManagedProperty(value = "#{dataBean}")
private DataBean dataBean2;

如果是这样,JSF如何知道哪个bean属于哪个.xhtml页面?


此刻我很困惑:-/因为我的代码有问题...但是首先我应该清楚地了解它

干杯...

加成:

假设我要从两个控制器中访问相同的ManagedBean(sessionScoped)。 我可以简单地说:

@ManagedBean
@RequestScoped
public class Controller {
  @ManagedProperty(value = "#{dataBean}")
  private DataBean dataBean;
...
@ManagedBean
@RequestScoped
public class Controller2 {
  @ManagedProperty(value = "#{dataBean}")
  private DataBean dataBean;

和我有相同的DataBean实例吗?

这段代码:

@ManagedProperty(value = "#{dataBean}")
private DataBean dataBean;
@ManagedProperty(value = "#{dataBean}")
private DataBean dataBean2;

将在dataBeandataBean2注入相同的实例。 只有一个#{dataBean}

加法 (问题加法的答案:))

是的,如果dataBean@SessionScoped ,则在两个控制器中您将获得相同的DataBean 当前会话中只有一个。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM