Java 在faces-config.xml中更改之前初始化的bean
我用这种方式在faces-config.xml中初始化这个beanJava 在faces-config.xml中更改之前初始化的bean,java,jsf,faces-config,Java,Jsf,Faces Config,我用这种方式在faces-config.xml中初始化这个bean public class MyBean { private Integer [] myField; public Integer [] getMyField() { return myField; } public void setMyField(Integer [] myField) { this.myField = myField; } 但这是不可
public class MyBean {
private Integer [] myField;
public Integer [] getMyField() {
return myField;
}
public void setMyField(Integer [] myField) {
this.myField = myField;
}
但这是不可能的,Integer[]results=myBean.getMyfield()
给我一个null
。无论如何,在我的应用程序的接口中,我可以看到bean已正确初始化,因为它包含值6、12和24。有什么帮助吗??
提前感谢当您使用
new
实例化MyBean时,它不会查找Faces配置。它将简单地使用构造函数创建一个对象
如果您使用的是jsf2.0
makebean,那么在使用
MyBean myBean = new MyBean();
Integer [] results = myBean.getMyfield();
//Change the value of this array
visualizationBean.setResultsPerPage(results);
并从作用域映射中检索Bean
实例。如果它的应用程序范围是bean
@ManagedBean(eager=true)
更新:
你的托管bean应该是这样的
MyBean mb = (MyBean)FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("beanName");
如果您只想在另一个bean中使用您的bean,那么正如BalusC所建议的,只需注入它并获取填充值,而不使用new
例如:如果您希望在SomeOtherBean
中弹出您的MyBean
,那么
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(eager="true")
@RequestScoped
public class MyBean {
更新
对于JSF1.2,没有注释,您需要配置faces config.xml
,如下所示
@ManagedBean()
@RequestScoped
public class SomeOtherBean {
@ManagedProperty(value="#{myBean}")
private MyBean myBean;
//getters & setters of myBean
蚕豆
com.example.my.MyBean
要求
其他人
com.example.some.AnotherBean
要求
蚕豆
#{myBean}
当您使用new
实例化MyBean
时,它不会查找Faces配置。它将简单地使用构造函数创建一个对象
如果您使用的是jsf2.0
makebean,那么在使用
MyBean myBean = new MyBean();
Integer [] results = myBean.getMyfield();
//Change the value of this array
visualizationBean.setResultsPerPage(results);
并从作用域映射中检索Bean
实例。如果它的应用程序范围是bean
@ManagedBean(eager=true)
更新:
你的托管bean应该是这样的
MyBean mb = (MyBean)FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("beanName");
如果您只想在另一个bean中使用您的bean,那么正如BalusC所建议的,只需注入它并获取填充值,而不使用new
例如:如果您希望在SomeOtherBean
中弹出您的MyBean
,那么
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(eager="true")
@RequestScoped
public class MyBean {
更新
对于JSF1.2,没有注释,您需要配置faces config.xml
,如下所示
@ManagedBean()
@RequestScoped
public class SomeOtherBean {
@ManagedProperty(value="#{myBean}")
private MyBean myBean;
//getters & setters of myBean
蚕豆
com.example.my.MyBean
要求
其他人
com.example.some.AnotherBean
要求
蚕豆
#{myBean}
您正在使用new创建对象,比如MyBean MyBean=new MyBean()代码>
所以您肯定会得到null。您正在使用new创建对象,比如MyBean MyBean=new MyBean()代码>
所以您肯定会得到空值。我使用的是jsf2.0,但是在哪里包含标签@ManagedBean(eager=true)???在bean声明中,我的IDE出现了错误,我们正在从jsf1迁移到jsf2,出现了一些问题。jsf1中不会有其他解决方案@Jigar如果有人想知道-要检索SessionScoped bean,必须使用getSessionMap
而不是getApplicationMap
。我使用的是jsf2.0,但是在哪里包括标记@ManagedBean(eager=true)???在bean声明中,我的IDE出现了错误,我们正在从jsf1迁移到jsf2,出现了一些问题。jsf1中不会有其他解决方案@Jigar如果有人想知道-要检索SessionScoped bean,必须使用getSessionMap
而不是getApplicationMap
。