gpt4 book ai didi

java - 未调用 Resteasy Bean 验证

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:37:39 26 4
gpt4 key购买 nike

问题背景

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

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

问题

  1. 如何在 Resteasy 中启用 bean 验证?

我尝试过的

我做了以下事情:

  1. 使用 @ValidateRequest 注释了我的资源类
  2. @Valid注解了方法参数
  3. 注释了我的输入类的约束。
  4. 添加了对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


更新(6/18/2013):

我将我的 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 validator “5.0.1.Final”,而不是在使用“resteasy-hibernatevalidator-provider”时需要 Hibernate validator 版本 4。

关于java - 未调用 Resteasy Bean 验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17005292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com