2016-11-06 8 views
0

私はspring-bootをバックエンドサーバーとして使用します。それには数十の行動方法があります。通常通りそれらの中にはバリデーションが含まれています。実際には私はBindingResultを使用し、HTTP 400ステータスを返すための検証エラーを返します。ErrorHandlerのフォーム検証結果の処理

@CrossOrigin 
@RestController 
public class ValidationTestController { 

    @RequestMapping(value = {"/validation-test", "/validation-test/"}, method = RequestMethod.POST) 
    @ResponseBody 
    public ResponseEntity<String> login(@RequestBody @Valid final TestData data, final BindingResult result) { 

     if (result.hasErrors()) { 
      return new ResponseEntity<>("Sorry incoming data is not valid!", HttpStatus.BAD_REQUEST); 
     } 

     return new ResponseEntity<>("OK!", HttpStatus.OK); 
    } 

    private static final class TestData { 

     @NotNull 
     private String value; 
    } 
} 

私の目的はfollpwing行を削除します

if (result.hasErrors()) { 
    return new ResponseEntity<>("Sorry incoming data is not valid!", HttpStatus.BAD_REQUEST); 
} 

は、私見では、認証および監査などの横断的関心事です。私は1つのグローバルErrorHandlerメソッドでそれを処理したい。メソッドを実行する前にCustomValidationExceptionをスローすることは可能です。だから私はErrorControllerで例外を処理することができます。

答えて

1

はい、@ExceptionHandler(春からControllerAdvice)を使用して、例外処理ロジックを1か所で集中管理できます。

here

関連する問題