Commons ELでBoolean型でNULLが返って来る


例えばこんなクラスがあって、

    public static class Foo {
        private Boolean aaa;

        private boolean bbb;

        public boolean isBbb() {
            System.out.println("isBbb called.....");
            return bbb;
        }

        public void setBbb(boolean bbb) {
            this.bbb = bbb;
        }

        public Boolean isAaa() {
            System.out.println("isAaa called.........");
            return null;
        }

        public Boolean getAaa() {
            System.out.println("getAaa called.........");
            return aaa;
        }

        public void setAaa(Boolean aaa) {
            this.aaa = aaa;
        }

    }


こういう感じでCommonsELでparseすると、

parser.parse("#{foo.aaa == true}");
parser.parse("#{foo.aaa == false}");


両方とも評価結果はfalseになる・・・
これは想定外でしたorz


EL式の評価方法を変えないと.
ちなみにBooleanのときにはisAaa()というメソッドではなく、getAaa()が呼ばれる点も
注意ですw 個人的にはこれもはまったり・・・


しかし痛いなー.