【问题标题】:JSF2 ManagedBeans LifecycleJSF2 ManagedBeans 生命周期
【发布时间】:2011-04-13 02:30:01
【问题描述】:

我有一个关于 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 实例?

【问题讨论】:

    标签: jsf jsf-2


    【解决方案1】:

    这段代码:

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

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

    加法(答案加法:))

    是的,如果dataBean@SessionScoped,那么在两个控制器中你会得到相同的DataBean。当前会话中只有一个。

    【讨论】:

    • 好吧:这就是为什么我应该为任何视图使用控制器...谢谢
    猜你喜欢
    • 2013-04-06
    • 1970-01-01
    • 2014-09-10
    • 2021-09-14
    • 2012-02-10
    • 1970-01-01
    • 2012-06-03
    • 2011-09-11
    相关资源
    最近更新 更多