<h:selectBooleanCheckbox>
, как следует из названия, должно быть привязано к свойству boolean
или Boolean
. Ничего больше. То, что он допускает атрибут converter
, на самом деле является ошибкой в спецификации . Он никогда не должен был этого допустить.
Проблема скорее в вашей модели, почему вы используете int
для представления логического состояния? Измените свою модель, чтобы она стала полноценной boolean
.
Если изменение модели по какой-либо причине невозможно (сторонний API, дурацкий архитектор, или глупые бизнес-ограничения и т. Д.), То поместите средство получения / установки модели в компонент поддержки следующим образом:
public boolean isChecked() {
return someModel.getSomeInt() != 0;
}
public void setChecked(boolean checked) {
someModel.setSomeInt(checked ? 1 : 0);
}
и используйте его вместо <h:selectBooleanCheckbox value="#{bean.checked}" />
.