以下是保存数据的代码。如果验证失败,我想抛出http错误代码422。但我得到200(OK)回复。怎么做。感谢
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));
}
答案 0 :(得分:1)
这一行:
$config
...告诉Play返回return ok(result);
(即HTTP状态200)结果。
play.mvc.Results课程提供了以下快捷方式:
ok
ok()
notFound()
badRequest()
它不提供422的快捷方式,但您可以轻松创建一个:internalServerError()
。
所以,只需替换......
status(422, "...")
... with:
return ok(result);
答案 1 :(得分:1)
只需将return ok(Json.toJson(book));
替换为return status(422)
或者您可以使用下面的链接查看除了最简单的status(422)表格之外还有其他选项。 https://www.playframework.com/documentation/2.0/api/java/play/mvc/Results.Status.html#Results.Status(play.api.mvc.Results.Status,%20byte[])