1

@SessionScopedを使用して別の Beanの Bean のプロパティにアクセスしたい@ManagedProperty。要するに、secondBean で firstBean の name プロパティにアクセスしたいのです。

@ManagedBean
@SessionScoped
public class FirstBean implements Serializable{
    private String name;
    //...other attributes
    //...constructor
    public String getSelectedModel() {
        return selectedModel;
    }

    public void setSelectedModel(String selectedModel) {
        this.selectedModel = selectedModel;
    }
    //other getters&setters
}

そして2番目の豆:

@ManagedBean
@SessionScoped
public class SecondBean implements Serializable{

@ManagedProperty(value="#{firstBean}")
private FirstBean firstBean

public SecondBean() {
    System.out.println(firstBean.getName());
}
public IndexBean getFirstBean() {
    return firstBean;
}

public void setFirstBean(FirstBean firstBean) {
    this.firstBean = firstBean;
}

これを実行すると、常にNullPointerException2System.out.println(firstBean.getName());番目の Bean のコンストラクターに取りかかります。これは、の新しいインスタンスを作成する必要があることを意味しているようですfirstBean

しかし不思議なことに、この行をコメントアウトすると、このようなことをエラーなしで行うことができます。これは、firstBean が実際には secondBean のプロパティであることを意味します。

<h:outputText value="#{secondBean.firstBean.name}" />

ここで何が問題なのですか?

4

1 に答える 1