如何在play framework java中抛出自定义http错误

如何在play framework java中抛出自定义http错误,java,playframework,Java,Playframework,下面是保存数据的代码。如果验证失败,我想抛出http错误代码422。但我得到了200(OK)的回复。如何做到这一点。谢谢 public Result saveBook() { Form<Book> bookForm = formFactory.form(Book.class).bindFromRequest(); if(bookForm.hasErrors()) { List<String>

下面是保存数据的代码。如果验证失败,我想抛出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));
    }
公共结果存储簿()
{
Form bookForm=formFactory.Form(Book.class).bindFromRequest();
if(bookForm.hasErrors())
{
List validationError=新建ArrayList();
ObjectNode result=Json.newObject();
结果.付诸表决(“代码”,422);
结果。放置(“状态”、“错误”);
对于(ValidationError e:bookForm.allErrors())
{
validationError.add(例如message());
}
put(“errors”,Json.toJson(validationError));
返回ok(结果);
}
Book Book=bookForm.get();
book.save();
返回ok(Json.toJson(book));
}
此行:

return ok(result);
。。。正在告诉Play返回
ok
(即HTTP状态200)结果

该类提供快捷方式,例如:

  • ok()
  • notFound()
  • badRequest()
  • internalServerError()
它不提供422的快捷方式,但您可以轻松创建一个:
status(422,“…”)

所以,只要替换

return ok(result);
。。。与:

return status(422, "your chosen status message");
这一行:

return ok(result);
。。。正在告诉Play返回
ok
(即HTTP状态200)结果

该类提供快捷方式,例如:

  • ok()
  • notFound()
  • badRequest()
  • internalServerError()
它不提供422的快捷方式,但您可以轻松创建一个:
status(422,“…”)

所以,只要替换

return ok(result);
。。。与:

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

只需替换
返回ok(Json.toJson(book))返回状态(422)

或者您可以使用下面的链接查看除了最简单的状态(422)表单之外,您还有哪些其他选项。

只需替换
返回ok(Json.toJson(book))返回状态(422)

或者您可以使用下面的链接查看除了最简单的状态(422)表单之外,您还有哪些其他选项。

非常感谢您。我得到了与我所期待的相同的回应。非常感谢你。我得到了与我所期待的相同的回应。谢谢