日々精進

新しく学んだことを書き留めていきます

JSFで入力欄を空にしても「0」が代入される

以下のようにInteger型のmonthフィールドをbindした場合、画面から入力値を空にしてもmonthには0が入ったままになり、nullにはならない。

    <h:inputText id="month" value="#{controller.month}" styleClass="inputText inputText-date">
        <f:ajax execute="#{execute}" event="change" />
    </h:inputText>月

原因はEL parserのバグで、EL parser内では値をintで扱っているので、nullを0に変換しているから。

以下のJVM Optionを追加すると直る。

-Dorg.apache.el.parser.COERCE_TO_ZERO=false

これはしょっぱいバグだなあ。。

参考: