2017-10-13 1 views
0

다음은 데이터를 저장하는 코드입니다. 유효성 검사가 실패하면 http 오류 코드 422를 반환하려고합니다. 하지만 나는 200 (OK) 응답을 받고있다. 그렇게하는 방법. 감사합니다재생 프레임 워크 자바에서 사용자 정의 http 오류를 던지는 방법

public Result saveBook() 
    { 
     Form<Book> bookForm = formFactory.form(Book.class).bindFromRequest(); 

     if(bookForm.hasErrors()) 
     { 
      List<String> validationError = new ArrayList<>(); 

      ObjectNode result = Json.newObject(); 

      result.put("code", 422); 
      result.put("status", "error"); 

      for(ValidationError e: bookForm.allErrors()) 
      { 
       validationError.add(e.message()); 
      } 

      result.put("errors", Json.toJson(validationError)); 

      return ok(result); 
     } 

     Book book = bookForm.get(); 
     book.save(); 

     return ok(Json.toJson(book)); 
    } 

답변

1

이 줄 :

return ok(result); 

은 ... ok (예 : HTTP 상태 200) 결과를 반환 재생을 말하고있다.

  • ok()
  • notFound()
  • badRequest()
  • internalServerError()

그것은 (422)에 대한 바로 가기를 제공하지 않습니다하지만 당신은 쉽게 할 수 있습니다

play.mvc.Results 클래스는 다음과 같은 단축키를 제공합니다 하나 생성 : status(422, "..."). 와

return ok(result); 

그래서, 그냥 대체 ... ... :

return status(422, "your chosen status message"); 
+0

너무 감사합니다. 내가 뭘 찾고 있었는지 똑같은 반응을 얻고있다. 감사 –

관련 문제