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 - 在 ReST 响应中返回 JSP

java - 约束验证顺序 - Jersey

java - 测试类无法从 TestSuite 中的循环正常运行...在 seleniumRC+JUNIT 中

java - 将 int 转换为字节 - Java 和 Actionscript 中的不同结果

java - java的多线程对操作系统可见吗

java - Servicestack 或 SignalR 的 SSE Java 客户端

java - Eclipse 中 Tomcat 上 Jersey 的基本完整配置

java - 计算 char 流消耗的字节数

java - 添加组件到JPanel,屏幕上没有变化

java - REST 调用返回空白 XML