0

我们知道 JAX-RS 可以轻松地将表单输入值直接映射到服务器 bean 属性或方法参数。

现在 JAX-RS 2.0 提供了一种使用 bean 验证来验证服务器端值的方法,这真是太神奇了。

但是我们如何以 Ajax 的方式在前端(给提交 HTTP 表单的用户)呈现有用的验证信息呢?

4

1 回答 1

1

可能的方法如下。创建 ErrorEntity 类,类似于

@XmlRootEntity
public class ErrorEntity{
  private String errorCode;
  private String description;

  //getters, setter, constructors

}

然后,如果发生错误抛出:

int statusCode = 500;
ErrorEntity ee = new ErrorEntity("SYSTEM", "Cannot connect to database, etc.");
throw new WebApplicationException(Response.status(statusCode).entity(ee).build());

显然使用正确的 HTTP 错误代码(400 表示格式错误的内容,404 表示丢失数据等)。

在 AJAX 应用程序中,如果您得到与 200、204 或 302 不同的内容,那么您应该获得带有 ErrorEntity 内容的 JSON 或 XML。

最简单的解决方案是简单地将 String 作为带有一些错误信息 + HTTP 状态代码的实体返回。

throw new WebApplicationException(Response.status(500).entity("Cannot connect to DB, ...").build());
于 2013-04-22T20:16:51.220 回答