LoginSignup
14
16

More than 5 years have passed since last update.

Playframework 2.x のエラーハンドリングTips

Last updated at Posted at 2012-10-21

フォームの相関チェックを行う

Playframework公式ドキュメントで紹介されているValidation Methodを利用します。例えば、Sign-up form内で、パスワードと確認用パスワードが一致するかはこのようにして確認できます。

public Map<String, List<ValidationError>> validate() {
    Map<String, List<ValidationError>> errors = null;
    if (!pwd.equals(confPwd)) {
        errors = new HashMap<String, List<ValidationError>>();
        List<ValidationError> lists = new ArrayList<ValidationError>();
        lists.add(new ValidationError("pwd", "error.pwdunmatched", new ArrayList<Object>()));
        errors.put("pwd", list);
    }
    return errors;
}

個々のエラーメッセージを出力する

Annotationで行っている単項目や上記で紹介した方法で詰まれたエラーは以下の様に取得できます。

for(Entry<String, List<ValidationError>> entry : form.errors().entrySet()){
    for(ValidationError validationError : entry.getValue()){
        for(Object argument : validationError.arguments()){
            System.out.println(validationError.argument, validationError.key, argument)
        }
    }
}

しかし、Controller側でエラーメッセージ取得することもないので、以下のような方法のでViewに出力方が良いかもしれませんね。

@(form: Form[_])
@import tags._
@if(form.hasErrors) {
    @for(entry <- form.errors.entrySet){
        @for(validationError <- entry.getValue){
            @for(argument <- valicationError.arguments){
                @Messages(validationError.message, Messages(validationError.key), Messages(argument))<br />
            }
        }
    }        
}
14
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
16