6

私はこの単純なBeanクラスを持っていて、BeanUtils.setPropertyを使用していくつかの値を設定しようとしています。問題は、Stringは問題なく機能するようですが、ブール値を設定しようとすると機能しません。フィールドをパブリックとして定義しようとしましたが、まだ機能していません。何か助けはありますか?なぜこれが機能しないのですか?

public class TestBean {

protected Boolean someBoolean;
protected String name;

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public boolean isSomeBoolean() {
    if (someBoolean == null) {
        return true;
    } else {
        return someBoolean;
    }
}

public void setSomeBoolean(Boolean value) {
    this.someBoolean = value;
}

public static void main(String[] args) {
    TestBean o = new TestBean();
    Boolean b = new Boolean(false);
    BeanUtils.setProperty(o, "someBoolean", b);
    BeanUtils.setProperty(o, "name", "A name");
    System.out.println(((TestBean)o).isSomeBoolean());
    // Output = true WHY?????
    System.out.println(((TestBean)o).getName());
    // Output = A name 

    BeanUtils.setProperty(o, "someBoolean", false);
    BeanUtils.setProperty(o, "name", "Another name");

    System.out.println(((TestBean)o).isSomeBoolean());
    // Output = true WHY????
    System.out.println(((TestBean)o).getName());
    // Output = Another name        

}

}

4

1 に答える 1

3

あなたはそれをから変更する必要があります

protected Boolean someBoolean;

protected boolean someBoolean;

ここから詳細情報を入手できます。

Java Beans、BeanUtils、およびブールラッパークラス

于 2012-07-04T16:44:15.840 に答える