【问题标题】:How to enable Bean Validation with Jax RS in TomEE 7.0.0-M1?如何在 TomEE 7.0.0-M1 中使用 Jax RS 启用 Bean 验证?
【发布时间】:2016-05-07 18:02:14
【问题描述】:

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

@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

我在这里错过了什么?

【问题讨论】:

  • 设置了该属性,或者使用 TomEE 7.0-M1 应该可以解决问题。您的问题一定出在其他地方。
  • 这就是我所希望的......仍然没有找到解决方案

标签: jakarta-ee jax-rs bean-validation apache-tomee tomee-7


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-08-20
      • 2018-12-11
      • 2023-01-26
      • 2012-11-03
      • 1970-01-01
      • 2019-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多