Seam Hibernate Validator отображает сообщения JSF - PullRequest
0 голосов
/ 20 июня 2011

У меня есть приложение, которое использует Seam 2.2.2-JSF 1.1 - Hibernate Validator 3.1.0.GA. Я пытаюсь отобразить пользовательские сообщения, используя опцию hibernate validate message = (). message = () отображается для других валидаторов, таких как @Length. Но сообщение, которое я установил для @NotNull, не работает.

Вот фрагмент кода.

<s:decorate id="decoration1" template="/includes/myTemplate.xhtml">         
 <ui:define name="label">userId</ui:define>
 <h:inputTextarea label="userIdFromTemplate" value="#myController.user.userId}" required="true" >
       <a4j:support event="onblur" reRender="decoration1" ajaxSingle="true"  bypassUpdates="true"/>
  </h:inputTextarea>
</s:decorate>

MyController

@Out(required = false) @Valid
Object user;

Поля объектов пользователя

 @NotNull(message="userIdFromAnno is required")
 getUserId() {
 }

Когда я устанавливаю javax.faces.component.UIInput.REQUIRED = {0} - обязательное поле в messages.properties, я получаю userIdFromTemplate - обязательное поле. В противном случае я получаю сообщение по умолчанию JSF Ошибка валидации: значение обязательно. Я никогда не получаю сообщение "UserIdFromAnno требуется".

Тот же код работает и забирает аннотации к сообщениям для @ Length.

Может кто-нибудь помочь?

1 Ответ

0 голосов
/ 20 июня 2011

Пустые параметры HTTP-запроса по умолчанию представлены в виде пустой строки. Это не то же самое, что нуль, и, следовательно, @NotNull никогда не будет вызываться. В JSF 2.0 вы можете использовать параметр контекста, чтобы позволить JSF интерпретировать пустые отправленные значения как нулевые. В JSF 1.2 вы можете использовать пользовательский преобразователь строк, чтобы JSF преобразовывал пустые отправленные значения в ноль. В JSF 1.1, однако, дизайн пользовательского преобразователя для строк никогда не будет вызываться.

Ваша лучшая ставка - использовать аннотацию @NotBlank для Hibernate Validator вместо @NotNull.

Смотри также:

...