3

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

@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

我在这里想念什么?

4

2 回答 2

0

在 M1 中,我认为您需要在方法上添加 @ValidateOnExecution,最后一个版本修复了 IIRC

于 2017-03-03T19:27:55.930 回答
-1

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

于 2017-03-03T03:42:21.383 回答