我有一个关于JSF及其ManagedBeans的基本问题。想象一下,我们设置了一个ManagedBean,它只包含我视图中的数据:
@ManagedBean(name = "dataBean")
@SessionScoped
public class DataBean {
接下来是我的控制器,它使用依赖注入将控制器与模型连接:
@ManagedBean
@RequestScoped
public class Controller {
@ManagedProperty(value = "#{dataBean}")
private DataBean dataBean;
现在让我们考虑一个控制器中的几个managedBeans:是否可以将另一个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实例吗?
答案 0 :(得分:1)
此代码:
@ManagedProperty(value = "#{dataBean}")
private DataBean dataBean;
@ManagedProperty(value = "#{dataBean}")
private DataBean dataBean2;
将在dataBean
和dataBean2
中注入相同的实例。只有一个#{dataBean}
。
添加(回答问题补充:))
是的,如果dataBean
为@SessionScoped
,则在两个控制器中都会获得相同的DataBean
。当前会话中只有一个。