问题背景
我有一个通过 Resteasy 使用 Spring 的 Resteasy 服务SpringContextLoaderListener
。这是建立在 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 验证开始工作,无需任何代码更改。