问题背景
我有一个通过 Resteasy 使用 Spring 的 Resteasy 服务SpringContextLoaderListener
。这是基于 Resteasy 版本构建的3.0-beta-6
.
我想对传入请求使用 bean 验证,但我无法让 Resteasy 调用验证器。它的行为就像没有配置验证一样,只是将无效的输入对象传递给方法。
Question
- 如何在 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>
The resteasy-hibernatevalidator-provider
依赖性带来了HibernateValidatorContextResolver
及其相关的HibernateValidatorAdapter
.
更新(2013 年 6 月 18 日):
我将 pom 中的 Resteasy 版本恢复为2.3.5.Final
bean 验证开始工作,无需更改任何代码。
使用 Resteasy '3.0.6.Final' 和 Spring '4.1.0.RELEASE' 运行。
“resteasy-hibernatevalidator-provider”不会评估 @Valid 带注释的参数。使用“resteasy-validator-provider-11”使一切正常工作,并且作为奖励,使用 Hiberbate 验证器“5.0.1.Final”,而不是在使用“resteasy-hibernatevalidator-provider”时需要 Hibernate 验证器版本 4。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)