У меня есть h:selectOneMenu, это заполнено перечислимыми значениями, который хорошо работает. Единственная проблема состоит в том, что я не знаю, как перезаписать стандартное сообщение об ошибке JSF, когда никакое допустимое значение не выбрано. Сообщение об ошибке всегда bv:title: 'Choose' must be convertible to an enum from the enum that contains the constant 'Choose'.
Хотя я указал requiredmessage и validatormessage (который работает над InputText), только стандартное сообщение JSF показывают.
Отрывок:
<h:selectOneMenu id="title" value="#{personBean.person.title}" required="true"
requiredMessage="ERROR"
validatorMessage="ERROR">
<f:selectItem itemValue="Choose" />
<f:selectItems value="#{personBean.titleOptions}" />
<f:ajax event="blur" render="titleError" />
<f:validateRequired/>
</h:selectOneMenu>
<h:message for="title" errorClass="invalid" id="titleError" />
Как я могу перезаписать стандартное сообщение блока проверки допустимости? Или лучше - я могу создать копию JSF messages.properties со специализированными сообщениями об ошибках (не хотите определять все ошибки в моем собственном messages.properties снова)?
Это не «обязательное» сообщение об ошибке. Это сообщение об ошибке "конвертера". Это может появиться, если текущий выбранный элемент не соответствует ни ожидаемому типу, ни какой-либо из опций в списке. Требуемое сообщение появится только в том случае, если текущий выбранный элемент null
.
Вы используете строковое значение в качестве первого элемента. Это не может быть преобразовано в перечисление. Вам нужно установить его как метку элемента со значением элемента null
.
<f:selectItem itemLabel="Choose" itemValue="null" />