java – Resteasy Bean验证未被调用

前端之家收集整理的这篇文章主要介绍了java – Resteasy Bean验证未被调用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问题背景

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

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

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

我试过的

我做了以下事情:

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

资源:

  1. @Named
  2. @Path("users")
  3. @ValidateRequest
  4. public class UserResource
  5. {
  6. /**
  7. *
  8. * @param user
  9. *
  10. * curl -x POST http://localhost:7016/api/1.0/users
  11. *
  12. */
  13. @POST
  14. @Consumes({MediaType.APPLICATION_JSON})
  15. @Produces({MediaType.APPLICATION_JSON})
  16. public Response createUser(@Valid User user)
  17. {
  18. //User creation logic here.
  19. }
  20. }

用户POJO:

  1. @JsonPropertyOrder({
  2. "user_id","user_name","email"
  3. })
  4. public class User
  5. {
  6. @JsonProperty("user_id")
  7. private Long userId;
  8.  
  9. @JsonProperty("user_name")
  10. @NotNull(message = "Username must be provided")
  11. private String username;
  12.  
  13. @Email(message = "Invalid email address.")
  14. private String email;
  15.  
  16. //Getters and Setters Removed for Brevity
  17. }

POM条目验证:

  1. <dependency>
  2. <groupId>org.jboss.resteasy</groupId>
  3. <artifactId>resteasy-hibernatevalidator-provider</artifactId>
  4. <version>${resteasy.version}</version>
  5. </dependency>

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

更新(2013年6月18日):

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

解决方法

你做到了这个:

向RESTEasy提供ValidatorAdapter

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

  1. @Provider
  2. public class MyValidatorContextResolver implements ContextResolver<ValidatorAdapter> {
  3.  
  4. @Override
  5. public ValidatorAdapter getContext(Class<?> type) {
  6. return new MyValidator();
  7. }
  8.  
  9. }

猜你在找的Java相关文章