【问题标题】:Jersey not validating entity泽西岛不验证实体
【发布时间】: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/…

标签: java jersey


【解决方案1】:

发现问题。我在 Jersey 2.8 上(让杰克逊的生活更轻松),但我依赖 jersey-bean-validation 2.21。下拉到 jersey-bean-validation 2.8 是一种享受。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 2011-08-02
    • 1970-01-01
    • 2015-11-25
    • 2017-05-13
    相关资源
    最近更新 更多