我们知道JAX-RS可以很容易地将表单输入值直接映射到服务器bean属性或方法参数。
现在JAX-RS 2.0提供了一种使用bean验证来验证服务器端值的方法,这真是太棒了。
但是我们如何能够以Ajax的方式在前端(向提交HTTP表单的用户)提供有用的验证信息?
答案 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());