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 個人的にはこれもはまったり・・・
しかし痛いなー.