Spring 3 MVCとJSR303 @正当な例

Spring 3 MVCおよびJSR303 @Validの例

Spring 3では、「http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html#mvc-annotation-driven [mvc:annotation-driven]」を有効にできます。クラスパスにJSR303検証フレームワークがある場合は、@Validアノテーションを介してJSR303 bean validationをサポートします。

Note
Hibernate Validatorは、JSR303のリファレンス実装です。

このチュートリアルでは、@Validアノテーションを介してHibernateバリデーターをSpring MVCと統合し、HTML形式でBean検証を実行する方法を示します。

使用される技術:

  1. Spring 3.0.5.RELEASE

  2. Hibernate Validator 4.2.0。最終

  3. JDK 1.6

  4. Eclipse 3.6

  5. メーベン3

1. プロジェクトの依存関係

Hibernateバリデータは、JBossパブリックリポジトリで入手できます。

    
        
            JBoss repository
            http://repository.jboss.org/nexus/content/groups/public/
        
    

    
        3.0.5.RELEASE
    

    

        
        
            org.springframework
            spring-core
            ${spring.version}
        

        
            org.springframework
            spring-web
            ${spring.version}
        

        
            org.springframework
            spring-webmvc
            ${spring.version}
        

        
        
            org.hibernate
            hibernate-validator
            4.2.0.Final
        

    

2. JSR303 Bean検証

Hibernateバリデーターアノテーションが付けられた単純なPOJO。

Note
詳細な説明については、このHibernate validator documentationを参照してください

package com.example.common.model;

import org.hibernate.validator.constraints.NotEmpty;
import org.hibernate.validator.constraints.Range;

public class Customer {

    @NotEmpty //make sure name is not empty
    String name;

    @Range(min = 1, max = 150) //age need between 1 and 150
    int age;

    //getter and setter methods

}

3. コントローラー+ @Valid

検証を機能させるには、@Validを介して「JSR注釈付きモデルオブジェクト」に注釈を付けるだけです。 それだけです。他のものは、通常のSpring MVCフォーム処理です。

package com.example.common.controller;

import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import com.example.common.model.Customer;

@Controller
@RequestMapping("/customer")
public class SignUpController {

    @RequestMapping(value = "/signup", method = RequestMethod.POST)
    public String addCustomer(@Valid Customer customer, BindingResult result) {

        if (result.hasErrors()) {
            return "SignUpForm";
        } else {
            return "Done";
        }

    }

    @RequestMapping(method = RequestMethod.GET)
    public String displayCustomerForm(ModelMap model) {

        model.addAttribute("customer", new Customer());
        return "SignUpForm";

    }

}

4. エラーメッセージ

デフォルトでは、検証が失敗した場合。

  1. @NotEmptyは「空ではない可能性があります」と表示します

  2. @Rangeは「1から150の間でなければならない」と表示します

簡単にオーバーライドし、「キー」とメッセージでプロパティを作成できます。 どの@annotationがどのキーにバインドされているかを知るには、それをデバッグして、「BindingResult result」内の値を表示します。 通常、キーは「@Annotation Name.object.fieldname」です。

ファイル:messages.properties

NotEmpty.customer.name = Name is required!
Range.customer.age = Age value must be between 1 and 150

5. mvc:annotation-driven

mvc:annotation-driven」を有効にして、Spring MVCが@Validを介してJSR303バリデーターをサポートするようにし、プロパティファイルもバインドします。



    

         
    

    
        
            /WEB-INF/pages/
        
        
            .jsp
        
    

        
    
        
    

6. JSPページ

最後の1つは、Springフォームタグライブラリを使用した通常のJSPページです。

ファイル:SignUpForm.jsp

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form"%>






    

Customer SignUp Form - JSR303 @Valid example

Customer Name :
Customer Age :

ファイル:Done.jsp



    

Done

6. Demo

URL : http://localhost:8080/SpringMVC/customer –名前と年齢の2つのテキストボックスがある顧客フォームページ。

Spring MVC JSR303 demo page

URL : http://localhost:8080/SpringMVC/customer/signup –フォームに入力せずに[送信]ボタンをクリックした場合は、カスタマイズした検証エラーメッセージが表示されます。

Spring MVC JSR303 demo page - error message

ソースコードをダウンロード

ダウンロード–SpringMVC-Bean-Validation-JSR303-Example-2.zip(9 KB)