如何在TomEE 7.0.0-M1中使用Jax RS启用Bean验证



我知道我一定错过了一些非常基本的观点。以下资源方法:

@GET
@Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public TestObject getObj(@QueryParam("m") String m,
                         @Min(30) @NotNull @QueryParam("d") Double d) {
    return new TestObject(m,m,d);
}

在 Glassfish4 中按预期工作(即返回 400 错误请求),但在 TomEE 7.0.0-M1 (jee7) 中,它忽略验证注释,并以 200 OK 响应。我尝试设置该属性(尽管在 TomEE 7 中它设置为默认启用),但仍然没有任何内容。

org.apache.openejb.default.system.interceptors = org.apache.openejb.bval.BeanValidationAppendixInterceptor

我在这里错过了什么?

在 M1 中,我认为您需要在方法上添加@ValidateOnExecution,最新版本已修复 IIRC

您必须在 JAX-RS 资源中添加@Singleton或@Stateless注释才能进行 Bean 验证。对于 CXF for non Singleton/non EJB resources org.apache.cxf.jaxrs.validation.JAXRSBeanValidationInvoker,如果需要验证这些对象,则需要注册这些对象。

最新更新