2011-03-03 19 views
1
public class MyBean { 
    private Integer [] myField; 


    public Integer [] getMyField() { 
     return myField; 
    } 
    public void setMyField(Integer [] myField) { 
     this.myField = myField; 
    } 

初始化之前,我以這種方式初始化faces-config.xml中這同一個bean更改豆faces-config.xml中

<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.
任何幫助? 在此先感謝

回答

3

當您使用new實例化MyBean時,它不會查找Faces-Config。它會簡單地使用構造函數創建一個對象。

如果您正在使用jsf2.0化妝豆當你的背景下被使用

@ManagedBean(eager=true) 

初始化,初始化和檢索範圍的地圖Bean實例。如果它的應用程序有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 poppu遲來的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> 
+0

我正在使用jsf2.0,但在哪裏包括塔標籤@ManagedBean(eager = true)???在bean聲明中?我在IDE上收到錯誤 – 2011-03-04 09:26:03

+0

檢查更新回答 – 2011-03-04 09:39:32

+0

謝謝,你幫了我很多 – 2011-03-04 14:55:52

1

您正在使用新創建對象像MyBean myBean = new MyBean();

所以你肯定會得到空。