Roberto de Santis
Roberto de Santis

Reputation: 858

Customize spring validation error

I want customize the spring validation error for

    @NotNull
    @Length(max = 80)
    private String email; 

but I'm unable to do it. What are the step to follow?

Upvotes: 32

Views: 58604

Answers (2)

Pushkar
Pushkar

Reputation: 7580

By Spring I am assuming you mean Spring MVC.

From the below reference http://static.springsource.org/spring/docs/2.0.x/reference/mvc.html

Here you go -

You create a validator class -

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.");
    }
}

Put in any validation text you want in the above field.

In the JSP you will need the following tag -

<tr>
    <td>First Name:</td>
    <td><form:input path="firstName" /></td>
    <!-- Show errors for firstName field -->
    <td><form:errors path="firstName" /></td>
</tr>

This way any validation error for firstName will be printed.

Upvotes: 0

Chin Huang
Chin Huang

Reputation: 13810

The JSR 303 default message interpolation algorithm allows you to customize messages by supplying a resource bundle named ValidationMessages. Create a ValidationMessages.properties file in the classpath containing:

javax.validation.constraints.NotNull.message=CUSTOM NOT NULL MESSAGE
javax.validation.constraints.Size.message=CUSTOM SIZE MESSAGE

This changes the default message for the @Size constraint, so you should use the @Size constraint instead of the Hibernate-specific @Length constraint.

Instead of changing the default message for all constraints, you can change the message for a specific constraint instance. Set the message attribute on the constraint:

@NotNull(message = "{email.notnull}")
private String email;

And add the message to the ValidationMessages.properties file:

email.notnull=E-mail address is required

Upvotes: 72

Related Questions