自定义弹簧验证错误

时间:2011-01-26 13:38:08

标签: spring validation customization bean-validation

我想自定义

的弹簧验证错误
    @NotNull
    @Length(max = 80)
    private String email; 

但我无法做到。 有什么步骤?

2 个答案:

答案 0 :(得分:55)

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

答案 1 :(得分:0)

到了春天,我假设你的意思是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的任何验证错误。