2017-10-13 1 views
0

Voici le code pour enregistrer des données. Je veux jeter le code d'erreur http 422 si la validation échoue. Mais je reçois 200 (OK) réponse. Comment faire ça. MerciComment lancer une erreur http personnalisée dans le cadre de jeu 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)); 
    } 

Répondre

1

Cette ligne:

return ok(result); 

... raconte la lecture pour revenir un ok (à savoir l'état HTTP 200) résultat.

La classe play.mvc.Results offre des raccourcis tels que:

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

Il ne propose pas un raccourci pour un 422, mais vous pouvez facilement en créer un: status(422, "...").

Donc, il suffit de remplacer ...

return ok(result); 

... avec:

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

Merci beaucoup. Je reçois la même réponse que ce que je cherchais. Merci –