java – RestEasy – 参数绑定 – 验证和错误 – EJB
假设我使用传递给REST调用的参数定义POJO
class MyVO { @NotNull @PathParam("name") private String name; @NotNull @PathParam("age") private Integer age; // getters and setters } public class RESTclass { public postData( @Form MyVO vo ) { } } 它会自动绑定MyVO中的对象.但是我在哪里得到验证错误? Spring做得很好.它有BindingResult参数,你可以注入. 任何的想法? 解决方法
RestEasy版本3.0.1.Final之前
对于bean验证1.0,Resteasy有一个自定义验证提供程序,它使用hibernate的bean验证器实现. 要在Resteasy中启动并运行验证,您需要执行以下操作: >将resteasy-hibernatevalidator-provider依赖项添加到项目中.如果您使用maven,这是maven pom条目: <dependency> <groupId>org.jboss.resteasy</groupId> <artifactId>resteasy-hibernatevalidator-provider</artifactId> <version>${resteasy.version}</version> </dependency> >使用@ValidateRequest批注对要进行验证的资源类进行注释. @Named @Path("/users") @ValidateRequest public class UserResource extends BaseResource { @POST @Consumes({MediaType.APPLICATION_JSON}) @Produces({MediaType.APPLICATION_JSON}) public Response createUser(@Valid User user) { //Do Something Here } } Resteasy会自动检测类路径上的HibernateValidatorAdapter并开始调用bean验证. 与Spring中必须检查BindingResult不同,当Resteasy遇到验证错误时,hibernate验证器将抛出MethodConstraintViolationException. MethodConstraintViolationException将包含其中的所有验证错误. @Provider public class MethodConstraintViolationExceptionMapper extends MyBaseExceptionMapper implements ExceptionMapper<MethodConstraintViolationException> { @Override public Response toResponse(MethodConstraintViolationException exception) { //Do Something with the errors here and create a response. } } RestEasy版本3.0.1.Final 最新版本的Resteasy现在支持bean验证规范1.1并且已经改变了抛出的api和异常. >而不是resteasy-hibernatevalidator-provider 文档:3.0.1.Final Validation Documentation (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – 如何保证ThreadPoolExecutor中的FIFO执行顺序
- java – ArrayList中的元素数量
- java – 在空列表中使用“.Get(0)”时,我得到一个越界异常而
- java – org.apache.batik.dom.svg.SVGDOMImplementation去
- java – MongoDB中计算的group-by字段
- JavaFX:在textArea中设置文本后,在单独的线程中设置滚动到
- java – 使用64位jdk时的整数范围
- 开发维护大型项目的Java的建议
- java – 仅在外部括号中捕获正则表达式中的组
- JSP JSTL <sql:query>标签:通过SQL语句查询