我有一个用@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");
}
我依赖于泽西豆验证:
<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"
}
答案 0 :(得分:1)
发现问题。我在泽西岛2.8(让杰克逊生活更轻松)但我依赖于泽西豆验证2.21。下降到泽西豆验证2.8是一种享受。