在嵌套属性上设置h:inputText值不起作用

时间:2014-10-02 01:15:37

标签: jsf jsf-2

给出以下Java类A:

public class A {

    private String s1;

    private String s2;

    ///  getters and setters

}

我想将它用作JSF Bean的成员:

@ManagedBean
public class Bean {

    private A a;

    public A getA () {
        return a;
    } 

    public void setA(A a) {
        this.a = a;
    }

}

能够在.xhtml中以下列方式使用它:

<h:inputText id="s1" value="#{bean.a.s1}" />  
<h:inputText id="s2" value="#{bean.a.s2}" /> 

这对我没用,有可能吗?否则我将不得不在Bean类中声明A的每个成员。

1 个答案:

答案 0 :(得分:2)

在你的managedbean中应该是像Leo所说的初始对象。

替代方案,通过构造函数

初始化对象
@ManagedBean
public class Bean {

    private A a;

    public Bean(){
        a = new A();
    }

    public A getA () {
        return a;
    } 

    public void setA(A a) {
        this.a = a;
    }

}

或postConstruct

@ManagedBean
public class Bean {

    private A a;

    @PostConstruct
    public void init() {
        a = new A();
    }

    public A getA () {
        return a;
    } 

    public void setA(A a) {
        this.a = a;
    }

}