【发布时间】:2011-06-15 20:46:05
【问题描述】:
我想自定义spring验证错误
@NotNull
@Length(max = 80)
private String email;
但我做不到。 下一步是什么?
【问题讨论】:
标签: spring validation customization bean-validation
我想自定义spring验证错误
@NotNull
@Length(max = 80)
private String email;
但我做不到。 下一步是什么?
【问题讨论】:
标签: spring validation customization bean-validation
我假设你指的是 Spring MVC。
来自以下参考 http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html
给你-
您创建一个验证器类 -
public class UserValidator implements Validator {
public boolean supports(Class candidate) {
return User.class.isAssignableFrom(candidate);
}
public void validate(Object obj, Errors errors) {
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "firstName", "required", "Field is required.");
ValidationUtils.rejectIfEmptyOrWhitespace(errors, "lastName", "required", "Field is required.");
}
}
在上述字段中输入您想要的任何验证文本。
在 JSP 中,您将需要以下标记 -
<tr>
<td>First Name:</td>
<td><form:input path="firstName" /></td>
<!-- Show errors for firstName field -->
<td><form:errors path="firstName" /></td>
</tr>
这样firstName 的任何验证错误都会被打印出来。
【讨论】:
JSR 303 default message interpolation algorithm 允许您通过提供名为 ValidationMessages 的资源包来自定义消息。在类路径中创建一个ValidationMessages.properties 文件,其中包含:
javax.validation.constraints.NotNull.message=CUSTOM NOT NULL MESSAGE
javax.validation.constraints.Size.message=CUSTOM SIZE MESSAGE
这会更改@Size 约束的默认消息,因此您应该使用@Size 约束而不是Hibernate 特定的@Length 约束。
您可以更改特定约束实例的消息,而不是更改所有约束的默认消息。在约束上设置message 属性:
@NotNull(message = "{email.notnull}")
private String email;
并将消息添加到ValidationMessages.properties 文件中:
email.notnull=E-mail address is required
【讨论】:
javax.validation.constraints.Size.message=Length must be between {min} and {max} characters