【发布时间】:2013-04-22 05:52:53
【问题描述】:
我们知道 JAX-RS 可以轻松地将表单输入值直接映射到服务器 bean 属性或方法参数。
现在 JAX-RS 2.0 提供了一种使用 bean 验证来验证服务器端值的方法,这真是太棒了。
但是我们如何以 Ajax 方式在前端(向提交 HTTP 表单的用户)呈现有用的验证信息?
【问题讨论】:
标签: jakarta-ee jax-rs bean-validation
我们知道 JAX-RS 可以轻松地将表单输入值直接映射到服务器 bean 属性或方法参数。
现在 JAX-RS 2.0 提供了一种使用 bean 验证来验证服务器端值的方法,这真是太棒了。
但是我们如何以 Ajax 方式在前端(向提交 HTTP 表单的用户)呈现有用的验证信息?
【问题讨论】:
标签: jakarta-ee jax-rs bean-validation
可能的方法如下。创建 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());
【讨论】: