簡體   English   中英

更改之前在faces-config.xml中初始化的bean

[英]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

例如:如果您希望MyBeanSomeOtherBeanSomeOtherBean那么

@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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM