きっと何者にもなれないSEの記録帳

日々で得たIT技術を記録していきます。

Spring MVC Validationを適用する

Spring MVCでValidationを適用する手順を記します。
 
pom.xml
Hibernate Validatiorを使用するためにライブラリをインポートします。
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.0.3.Final</version>
</dependency>
 
Controllerクラス
画面からの値を受け取るエンティティクラスに@Validアノテーションを適用します。
BindingResultクラスの変数にValidationを行った結果が入ります。
bindingResult.hasErrors()で入力チェックエラーが存在するかを判断しています。エラーが存在する場合、上記メソッドの結果がtrueになります。
@RequestMapping(value="/user/create", method=RequestMethod.POST)
public String create(@Valid @ModelAttribute("userModel") UserModel userModel,BindingResult bindingResult , Model model) {

    if(bindingResult.hasErrors()){

        model.addAttribute("userModel", userModel);
        model.addAttribute("status", NEW);
        return "user";
    }
    userService.createUser(userModel);
    model.addAttribute("userModel",userModel);
    model.addAttribute("status", EDIT);
    return "user";
}

 

画面の入力値を扱うエンティティクラスにValidation用のアノテーションを指定します。
下記では@NotEmpty(必須入力用アノテーション)を使用しています。

public class UserModel {
    @NotEmpty
    private String username;
    private String mailaddress;

    public String getUsername() {
        return username;
    }
    public void setUsername(String username) {
        this.username = username;
    }
    public String getMailaddress() {
        return mailaddress;
    }
    public void setMailaddress(String mailaddress) {
        this.mailaddress = mailaddress;
    }
}

 

ValidationMessages.properties
エラーメッセージの内容を日本語にするために編集します。
Hibernate Validatiorのjarファイル内にValidationMessages.propertiesが存在します。
デフォルトではこの内容が表示されます。

@NotEmptyは以下のように定義されています。

org.hibernate.validator.constraints.NotEmpty.message = may not be empty
 
デフォルトを上書きする形で、ValidationMessages.propertiesを新たに定義し、プロジェクトのクラスパス内に配置します。
org.hibernate.validator.constraints.NotEmpty.message = 必須入力です。
 
form:errorsタグでエラーメッセージを表示します。
<form:input path="username"/><form:errors path="username"/>