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

java – Resteasy Bean验证未被调用

发布时间:2020-12-15 03:11:31 所属栏目:Java 来源:网络整理
导读:问题背景 我有一个Resteasy服务,通过Resteasy的SpringContextLoaderListener使用Spring.这是基于Resteasy版本3.0-beta-6. 我想对传入的请求使用bean验证,但我无法让Resteasy调用验证器.它的作用就像没有配置验证,只是将方法传递给无效的输入对象. 题 如何在R
问题背景

我有一个Resteasy服务,通过Resteasy的SpringContextLoaderListener使用Spring.这是基于Resteasy版本3.0-beta-6.

我想对传入的请求使用bean验证,但我无法让Resteasy调用验证器.它的作用就像没有配置验证,只是将方法传递给无效的输入对象.

>如何在Resteasy中启用bean验证?

我试过的

我做了以下事情:

>使用@ValidateRequest注释我的资源类
>使用@Valid注释方法参数
>注释我的输入类的约束.
>添加了对resteasy-hibernatevalidator-provider的依赖

资源:

@Named
@Path("users")
@ValidateRequest
public class UserResource 
{
    /**
     * 
     * @param user
     * 
     * curl -x POST http://localhost:7016/api/1.0/users
     * 
     */
    @POST
    @Consumes({MediaType.APPLICATION_JSON})
    @Produces({MediaType.APPLICATION_JSON})
    public Response createUser(@Valid User user)
    {
        //User creation logic here.
    }
}

用户POJO:

@JsonPropertyOrder({
    "user_id","user_name","email"
})
public class User
{
    @JsonProperty("user_id")
    private Long userId;

    @JsonProperty("user_name")
    @NotNull(message = "Username must be provided")
    private String username;

    @Email(message = "Invalid email address.")
    private String email;

    //Getters and Setters Removed for Brevity
}

POM条目验证:

<dependency>
        <groupId>org.jboss.resteasy</groupId>
        <artifactId>resteasy-hibernatevalidator-provider</artifactId>
        <version>${resteasy.version}</version>
    </dependency>

resteasy-hibernatevalidator-provider依赖项引入了HibernateValidatorContextResolver及其关联的HibernateValidatorAdapter.

更新(2013年6月18日):

我将我的pom中的Resteasy版本恢复为2.3.5.Final和bean验证开始工作而没有任何代码更改.

解决方法

你做到了这个:

向RESTEasy提供ValidatorAdapter

RESTEasy将尝试通过类路径中的ContextResolver提供程序获取ValidatorAdapter的实现.我们可以为RESTEasy提供如下实现:

@Provider
public class MyValidatorContextResolver implements ContextResolver<ValidatorAdapter> {

   @Override
   public ValidatorAdapter getContext(Class<?> type) {
      return new MyValidator(); 
   }

}

(编辑:李大同)

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

    推荐文章
      热点阅读