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