Spring
MVCでValidationを適用する手順を記します。
<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"/>