Seam Hibernate Validator显示JSF消息

时间:2011-06-20 14:58:07

标签: jsf seam bean-validation

我有一个使用Seam 2.2.2- JSF 1.1 - Hibernate Validator 3.1.0.GA的应用程序。我试图使用hibernate validate message =()选项显示自定义消息。为@Length等其他验证器显示message =()。但是我为@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 :(得分:0)

默认情况下,空HTTP请求参数作为空字符串提交。这与null不同,因此永远不会调用@NotNull。在JSF 2.0上,您可以使用context参数让JSF将空提交的值解释为null。在JSF 1.2上,您可以使用自定义字符串转换器让JSF将空提交的值转换为null。但是,在JSF 1.1中,根据设计,永远不会调用字符串的自定义转换器。

您最好的选择是使用Hibernate Validator特定的@NotBlank注释而不是@NotNull

另见: