1

我有以下 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 服务发送的错误消息。如何编写代码以将消息从后端发送到前端?

4

3 回答 3

1

添加类似的东西

return Response.status(400).entity(ex.getMessage()).build();

或者当然

r = Response.status(400).entity(ex.getMessage()).build();

到你的 catch 块。(当然,状态码取决于你想说什么。)

于 2013-06-24T14:43:58.607 回答
1

您可以返回如下错误代码:

return Response.status(Status.FORBIDDEN).entity(ex.getMessage()).build();
于 2013-06-24T14:46:03.707 回答
1

您可以将响应包装在您自己的对象中,如下所示:

public class MyResponse {
    private boolean success = true;
    private String exMessage;
    private Object data;
    ...
}

然后,您只需将要序列化的数据作为 MyResponse.setData() 添加到 Json。如果失败,您将成功设置为 false 并设置 exMessage。只需创建自己的信封,即可将所需的任何信息附加到要发送的数据中。

编辑:与选定的答案相比,这不会让您在出错时解析不同的方式。

于 2013-06-24T14:55:37.050 回答