public class MyBean {
private Integer [] myField;
public Integer [] getMyField() {
return myField;
}
public void setMyField(Integer [] myField) {
this.myField = myField;
}
我以这种方式在faces-config.xml中初始化这个相同的bean
<managed-bean-name>myBean</managed-bean-name>
<managed-bean-class>com.path.bean.MyBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>myField</property-name>
<list-entries>
<value>6</value>
<value>12</value>
<value>24</value>
</list-entries>
</managed-property>
</managed-bean>
然后,在应用程序中我想要更改这些值。要做到这一点:
MyBean myBean = new MyBean();
Integer [] results = myBean.getMyfield();
//Change the value of this array
visualizationBean.setResultsPerPage(results);
但这是不可能的,Integer [] results = myBean.getMyfield()
给了我一个null
。无论如何,在我的应用程序的界面中,我可以看到bean正确初始化,因为它保存了值6,12和24.
任何形式的帮助?
提前致谢
答案 0 :(得分:3)
当您使用MyBean
实例化new
时,它不会查找Faces-Config。它只是使用构造函数创建一个对象。
如果在使用
初始化上下文时使用jsf2.0
make bean进行初始化
@ManagedBean(eager=true)
并从范围映射中检索Bean
实例。如果它的应用程序作用域为。
MyBean mb = (MyBean)FacesContext.getCurrentInstance().getExternalContext().getApplicationMap().get("beanName");
<强>更新强>
您的托管bean应该是,
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
@ManagedBean(eager="true")
@RequestScoped
public class MyBean {
如果您只想在另一个bean中使用bean,那么BalusC建议只需注入它并获取填充值,而不使用new
例如:如果您希望MyBean
填充SomeOtherBean
,那么
@ManagedBean()
@RequestScoped
public class SomeOtherBean {
@ManagedProperty(value="#{myBean}")
private MyBean myBean;
//getters & setters of myBean
<强>更新强>
对于jsf 1.2,没有注释,您需要配置faces-config.xml
,如下所示
<managed-bean>
<managed-bean-name>myBean</managed-bean-name>
<managed-bean-class>com.example.my.MyBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>someAnotherBean</managed-bean-name>
<managed-bean-class>com.example.some.AnotherBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
<managed-property>
<property-name>myBean</property-name>
<value>#{myBean}</value>
</managed-property>
</managed-bean>
答案 1 :(得分:1)
您正在使用MyBean myBean = new MyBean();
所以你肯定会得到null。