加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – RestEasy – 参数绑定 – 验证和错误 – EJB

发布时间:2020-12-15 05:11:03 所属栏目:Java 来源:网络整理
导读:假设我使用传递给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 ) { } }
假设我使用传递给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验证.
>创建ExceptionMapper< MethodConstraintViolationException>实现来处理验证错误.

与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
需要resteasy-validator-provider-11依赖.
>您不需要将@ValidateRequest添加到资源类中
因为默认情况下启用了验证测试
RestEasy的验证器提供商-11.
>而不是在何时抛出MethodConstraintViolationException
检测到违规,这是RESTEasyViolationException的一个实例
将被抛出.

文档:3.0.1.Final Validation Documentation

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读