2013-04-22 28 views
0

我们知道JAX-RS可以轻松地将表单输入值直接映射到服务器bean属性或方法参数。基于JAX-RS 2.0应用程序中的bean验证的HTML表单验证

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

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

回答

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。

最简单的解决方案是简单地返回字符串作为实体与一些错误信息+ HTTP状态码。

throw new WebApplicationException(Response.status(500).entity("Cannot connect to DB, ...").build());