gre*_*ker 7 java spring resteasy bean-validation
我有一个Resteasy服务,通过Resteasy使用Spring SpringContextLoaderListener.这是基于Resteasy版本3.0-beta-6.
我想对传入的请求使用bean验证,但我无法让Resteasy调用验证器.它的作用就像没有配置验证,只是将方法传递给无效的输入对象.
我做了以下事情:
@ValidateRequest@Validresteasy-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.
}
}
Run Code Online (Sandbox Code Playgroud)
@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
}
Run Code Online (Sandbox Code Playgroud)
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-hibernatevalidator-provider</artifactId>
<version>${resteasy.version}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
该resteasy-hibernatevalidator-provider依赖性带来的HibernateValidatorContextResolver及其相关HibernateValidatorAdapter.
我在我的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();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4693 次 |
| 最近记录: |