Кажется, что переданное значение false
каким-то образом конфликтует со значением пустой строки noSelectionOption
. Следующие записи для 1-го элемента работают нормально:
<f:selectItem itemLabel="" itemValue="" />
и
<f:selectItem itemLabel="" noSelectionOption="true" />
и
<f:selectItem itemLabel="" itemValue="#{null}" noSelectionOption="true" />
Я только не понимаю, почему. Это нелогично. Чтобы найти реальный ответ, мне нужно запустить отладчик.
Обновление : я отладил и нашел виновника в SelectUtils#valueIsNoSelectionOption()
(Моджарра). Пустая строка noSelectionOption
приводится к boolean false
вместо Boolean null
, и, следовательно, сравнение с переданным значением является действительным, и, следовательно, выбранное значение является недействительным. Это "по замыслу". Вам действительно нужно явно указать itemValue="#{null}"
.