play2.4での入力チェックについて
@Required(message = "名前を入力してください。")
@Pattern(value = "^(?!.*abc).+$", message = "abcという文字列は使えません")
public String name;
@MinLength(value = 4, message = "4文字以上入力してください。")
@MaxLength(value = 16, message = "16文字以下で入力してください。")
@Pattern(value = "^[a-zA-Z0-9]+$", message = "半角英数字のみで入力してください。")
public String userName;
のように@で行うバリデート以外にも
バリデーションを追加したい場合。
今回は期間の入力フォームに対して
バリデーションをつけたかったので以下のようにした。
//期間初日
@Required(message = "未入力です"。)
@Formats.DateTime(pattern = "yyyy/MM/dd")
public Date start_date;
//期間最終日
@Required(message = "未入力です"。)
@Formats.DateTime(pattern = "yyyy/MM/dd")
public Date end_date;
// バリデーションの追加
public List<ValidationError> validate() {
List<ValidationError> errors = new ArrayList<ValidationError>();
if(!validateDateCompare(start_date, end_date)){
errors.add(new ValidationError("date", "期間最終日は期間初日より未来の日付を入力してください。"));
}
return errors.isEmpty() ? null : errors;
}
// 日付を比較
public boolean DateCompare(Date start_date, Date end_date) {
int diff = start_at.compareTo(end_date);
if (diff == 0 || 0 > diff) {
return true;
} else {
return false;
}
}
viewでのエラーメッセージ表示方法は@のバリデーションと同様。
List<ValidationError> errors
はList<ValidationError>
以外に
String
やMap<String,List<ValidationError>>
にしても使える。