【发布时间】:2015-09-16 21:42:27
【问题描述】:
我有一个用 @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"
}
【问题讨论】:
-
有同样的问题,@Valid 似乎根本没有抛出异常。我检查了我创建的自定义约束,它实际上返回 false,但没有任何异常。我的问题:stackoverflow.com/questions/32611262/…