@Valid注释在JAX-RS @POST资源的参数中不起作用

问题描述

因此,我有一个JAX-RS资源,该资源使用@Valid批注来验证请求主体映射到的实体类,如文档所指定的那样

@Path("/test")
public class Test {

    @POST
    @Consumes("application/json")
    @Produces("application/json")
    public Response processPostRequest(@Valid TestRequest testRequest) {
        ...
        return Response.accepted(testRequest.getOutputs()).build();
    }
}

实体类定义如下

public class testRequest {

    private String id;

    @NotEmpty
    private Map<String,Integer> outputs;

    ....getters,setters...

}

但是我是否发送不带输出字段的json

{
  "id": "abc00def"
}

或带有但空的

{
  "id": "abc00def"
  "outputs": {}
}

验证不会发生,不会引发异常,并且会根据return语句发送202响应。 使用的应用程序服务器是WildFly20,并且bean验证处于活动状态。

WildFly文档https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/#validator-gettingstarted-createproject

中有相关说明。

WildFly应用程序服务器开箱即可包含Hibernate Validator。为了将Jakarta Bean验证API和Hibernate Validator的服务器模块更新到最新和最大的版本,可以使用WildFly的补丁机制。

补丁可用于WildFly 19及更早版本。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...