在JAX-RS 2.0应用程序中基于bean验证的HTML表单验证

时间:2013-04-22 05:52:53

标签: java-ee jax-rs bean-validation

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

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

但是我们如何能够以Ajax的方式在前端(向提交HTTP表单的用户)提供有用的验证信息?

1 个答案:

答案 0 :(得分: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());