2017-10-13 11 views
0

以下はデータを保存するコードです。検証が失敗した場合、httpエラーコード422を投げたい。しかし、私は200(OK)の応答を得ています。どうやってするか。おかげプレイフレームワークJavaでカスタム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)の結果を返すようにプレイを語っています。それは422のショートカットを提供するものではありませんが、簡単にでき

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

play.mvc.Resultsクラスは、次のようなショートカットを提供しています作成する:status(422, "...")

return ok(result); 

だから、単に置き換える... ...:

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

はありがとうございました。私は私が探していたのと同じ応答を得ています。ありがとう –

関連する問題