我有以下Java方法注释为Jersey @POST来处理表单提交:
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Path("created")
public Response createCustomer(@FormParam("username") String username,
@FormParam("name") String name, @FormParam("dob") Date dob)
throws ServletException, IOException {
URI uri = URI.create(uriInfo.getPath());
Response r;
Integer id;
try {
id = dbController.create(username, name, dob); // This may throw exception.
r = Response.created(uri).build();
} catch (DataAccessException ex) {
String errMsg = ex.getMessage();
// To do: how to send error message to AJAX so that client-side can see the error message?
}
return r;
}
表单提交后,如果有一些错误,我希望客户端用户看到从后端REST服务发送的错误消息。如何编写代码以便从后端向前端发送消息?
答案 0 :(得分:1)
添加类似
的内容return Response.status(400).entity(ex.getMessage()).build();
或当然
r = Response.status(400).entity(ex.getMessage()).build();
到你的catch区块。 (状态代码取决于你想说的话。)
答案 1 :(得分:1)
您可以返回如下错误代码:
return Response.status(Status.FORBIDDEN).entity(ex.getMessage()).build();
答案 2 :(得分:1)
您可以将响应包装在您自己的对象中,如下所示:
public class MyResponse {
private boolean success = true;
private String exMessage;
private Object data;
...
}
然后,您只需将要序列化的数据添加到Json作为MyResponse.setData()。如果失败,则将success设置为false并设置exMessage。只需创建一个自己的信封,就可以将所需的任何信息附加到您要发送的数据中。
编辑:与选定的答案相比,这不会让你在出错时解析不同的方式。