モハラ 2.1.6 / グラスフィッシュ 3.1.2
私はこのようなものを持っています
<ui:repeat var="item" value="#{bean.items}">
<h:inputText value="#{item.longProperty}"/>
</ui:repeat>
ここで、Item は Long プロパティを持つオブジェクトです
public class Item {
private Long longProperty; // + getters/setters
}
longProperty を null 以外 / 空でないものに設定している限り、問題なく動作します。
これを行うと、null 入力は無視され、古い値が復元されます。
日付についても同様の結果です。
ui:repeat から var/status への参照を削除しても違いはありません。#{bean.items[0].longProperty} を明示的に参照しても、同じように失敗します。
同じ正確な h:inputText が ui:repeat の外で正常に機能し、null/空の値が正常に機能します。
さらに、 ui:repeat内では、プロパティが変換を必要とするオブジェクトではなく文字列である場合、空の文字列は正常に機能します。
さらに奇妙にするには、入力に valueChangeEvent を配置すると、予期したevent.getNewValue()
ときに null が返されることがわかりますが、セッターは古い値で呼び出されます。
何が起こっているのか分かりますか?