java - Jersey 未验证实体

标签 java jersey

我有一个用@NotNull注释的字段,当我将JSON传递给缺少该字段的Rest资源时,它将继续进行。

根据对文档的理解,除了进行简单的验证外,我不需要其他任何东西。

据我所知,我已经准备好了一切,不确定我缺少什么。使用Java 8,Jersey 2.8,maven tomcat7插件。

@Path("/trade")
public class TradeEndpoint {

    @Autowired
    private OrderFillService orderFillService;

    @POST
    @Path("limit")
    @Consumes({ MediaType.APPLICATION_JSON })
    public void limitOrder(@Valid LimitOrderModel limitOrder) {

        placeTrade(limitOrder);
    }
...
}

public class LimitOrderModel {

    @NotNull
    private String symbol;
    ...
}


我设置属性以将错误发送回客户端:

public Application () {
        packages("com.foo.web.endpoint");
        register(JacksonFeature.class);
        property(ServerProperties.BV_SEND_ERROR_IN_RESPONSE, "true");
    }


我对jersey-bean-validation有依赖性:

    <dependency>
        <groupId>org.glassfish.jersey.ext</groupId>
        <artifactId>jersey-bean-validation</artifactId>
        <version>2.21</version>
    </dependency>


发布此JSON作品(执行placeTrade()):

{
   "limitPrice":"60",
   "side":"SELL",
   "quantity":"100"
}

最佳答案

找到了问题。我使用的是Jersey 2.8(使Jackson的生活更轻松),但我依赖的是jersey-bean-validation 2.21。下降到jersey-bean-validation 2.8可以解决问题。

关于java - Jersey 未验证实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32619250/

相关文章:

java - 使用自定义排序规则对int(不是Integer)数组进行排序

java - 由于JDK/JRE错误而无法运行程序

java - MongoJack 支持 @javax.persistance.Id 不起作用

java - 没有 HTTP 服务器的 Jersey 单元测试

java - 如何在 Jersey 使用自定义验证

java - 如何在 NetBeans 中使用 Hibernate 从 Mysql 获取最后一条记录?

java - Jersey 客户测试

gradle - 在Gradle中找出哪个版本的Dropwizard依赖

java - 如何获得IP正在访问您的 Web 服务的客户端的地址?

java - 如果在 MYSQL 中使用 liquibase,则删除外键