2017-10-13 55 views
0

以下是保存數據的代碼。如果驗證失敗,我想拋出http錯誤代碼422。但我得到200(OK)的迴應。怎麼做。由於如何在播放框架中拋出自定義http錯誤java

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)的結果。

play.mvc.Results類提供了快捷鍵,比如:

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

它不提供針對422的快捷方式,但你可以很容易地創建一個:status(422, "...")

因此,只需更換...

return ok(result); 

...有:

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

謝謝你這麼多。我得到了同樣的迴應,我正在尋找。謝謝 –