[英]Changing beans initialized before in faces-config.xml
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。
任何形式的幫助? 提前致謝
在使用new
實例化MyBean
,它不會查找Faces-Config。 它只是使用構造函數創建一個對象。
如果在使用時初始化上下文時使用jsf2.0
make bean進行初始化
@ManagedBean(eager=true)
並從作用域地圖中檢索Bean
實例。 如果它的應用程序作用域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
中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>
您正在使用MyBean myBean = new MyBean();
創建對象MyBean myBean = new MyBean();
所以你肯定會得到null。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.