del.icio.us Digg DZone Reddit StumbleUpon
Annotation-Based Validation with the Spring Bean Validation Framework - Willie Wheeler
« Previous | 1 | 2 | 3 | Next »

Validation Messages

Code listing: /WEB-INF/classes/errors.properties
UserMessage.name[not.blank]=Please enter your name.
UserMessage.name[length]=Please enter no more than {2} characters.
UserMessage.email[not.blank]=Please enter your e-mail address.
UserMessage.email[email]=Please enter a valid e-mail address.
UserMessage.email[length]=Please enter no more than {2} characters.
UserMessage.text[not.blank]=Please enter a message.
UserMessage.text[length]=Please enter no more than {2} characters.

The keys should be fairly self-explanatory given UserMessage above. Each key involves a class, a field and an annotation. The values are parametrizable messages, not unlike Commons Validator messages if you're familiar with those. In the three length messages, I'm using {2} to indicate argument #2—viz., max—for the length validation rule. Argument #1 happens to be min, and argument #0 in general appears to be the form bean itself. I can imagine that it would be nice to be able to use the form bean to get at the specific submitted value so you could say things like "You entered 4012 characters, but the limit is 4000 characters." And I think there's actually a way to do that though I don't myself know how to do it yet. (This is another one of those areas where I'd appreciate whatever information you may have.)

I mentioned above that I chose @NotBlank instead of @Length(min = 1, max = 80). The reason is that I wanted to use a specific error message ("Please enter your name") if the message is blank. I could have just used "Please enter a name between 1-80 characters" but that sounds slightly silly compared to "Please enter your name", and since I'm a usability guy I care about such things.

The JSPs

We have two JSPs: the form itself, and a basic (really basic) "thank you" page.

Code listing: /WEB-INF/form.jsp
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Contact Us</title>
        <style>
            .form-item { margin: 20px 0; }
            .form-label { font-weight: bold; }
            .form-error-field { background-color: #FFC; }
            .form-error-message { font-weight: bold; color: #900; }
        </style>
    </head>
    <body>
    
<h1>Contact Us</h1>

<%-- Give command object a meaningful name instead of using default name, 'command' --%>
<form:form commandName="userMessage">
    <div class="form-item">
        <div class="form-label">Your name:</div>
        <form:input path="name" size="40" cssErrorClass="form-error-field"/>
        <div class="form-error-message"><form:errors path="name"/></div>
    </div>
    <div class="form-item">
        <div class="form-label">Your e-mail address:</div>
        <form:input path="email" size="40" cssErrorClass="form-error-field"/>
        <div class="form-error-message"><form:errors path="email"/></div>
    </div>
    <div class="form-item">
        <div class="form-label">Your message:</div>
        <form:textarea path="text" rows="12" cols="60" cssErrorClass="form-error-field"/>
        <div class="form-error-message"><form:errors path="text"/></div>
    </div>
    <div class="form-item">
        <input type="submit" value="Submit" />
    </div>
</form:form>

    </body>
</html>

This is just a standard Spring WebMVC form, so I'll invoke my "I assume you know Spring WebMVC" assumption here. The cssErrorClass attribute is kind of fun if you don't already know about it. It indicates the CSS class to use in the event of a validation error. You can combine that with the cssClass attribute (which applies in the non-error case) though I haven't done that here.

Now here's the basic "thank you" page:

Code listing: /WEB-INF/thanks.jsp
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title>Thank You</title>
    </head>
    <body>
        <h1>Thank You</h1>
    </body>
</html>

(I told you it was basic...)

OK, now we're ready to move onto application configuration. Almost done!

Social bookmarks: del.icio.us Digg DZone Reddit StumbleUpon
« Previous | 1 | 2 | 3 | Next »
Show comments (15)

Post a comment

Your name:
Your e-mail address (won't be displayed):
Your web site (optional):
example: www.xyz.com
Your comment:
Please help us prevent comment spam:

What's New?

2008-10-20 - I've added a new mailing list feature to the site. Sign up to receive e-mail updates about new articles.
2008-09-30 - We've released chapter 4 (User registration) and chapter 5 (Authentication) of Spring in Practice.
2008-09-11 - By popular demand, I've added an RSS feed to the site.
Home | Consulting | Tech Articles | Mailing List | About | Contact | Spring Blog
Copyright © 2008 Wheeler Software, LLC.