【问题标题】:Auto validation of methods with hibernate validator 5.x + EJB使用休眠验证器 5.x + EJB 自动验证方法
【发布时间】:2014-03-19 15:04:52
【问题描述】:

我有以下环境:

  • 玻璃鱼4
  • hibernate-validator-5.0.1.Final.jar(入耳式)

现在我尝试实现方法参数的自动验证:

@Local
@ValidateOnExecution(type = ExecutableType.ALL)
public interface SomeServiceLocal {

   String someMethod(@Size(max = 1) String value);

}

执行中:

@Stateless
public class OtherBean implements OtherBeanLocal {

  @Inject
  private SomeServiceLocal someService;

     @Override
     public String otherMethod() {
       return someService.someMethod("abc");
     }

  }

}

我认为调用 someMethod 会导致验证错误。为什么它不工作?

【问题讨论】:

  • 方法验证应该会在您使用 Bean Validation 注解后自动工作。您甚至不必添加(并且可能不应该,除非您有充分的理由)验证器工件。 Bean Validation 由容器提供。也就是说,我不确定为什么你的情况没有发生。日志中是否有任何内容(您是否启用了调试/跟踪日志记录)?有什么例外吗?
  • 我在日志文件中没有任何奇怪的消息。

标签: cdi ejb-3.1 hibernate-validator


【解决方案1】:

从您的 EAR 文件中删除休眠验证器。当您以这种方式嵌入时,自动注册将无法正常工作。您需要使用他们的 CDI 扩展来注册它。

【讨论】:

  • 我从依赖项中删除了hibernate-validator,结果是一样的。也许我需要一些额外的配置(拦截器等)?
【解决方案2】:

我自己解决了问题。需要在bean实现的类级别添加@ValidateOnExecution - SomeServiceBean

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-20
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 2011-11-17
    • 1970-01-01
    相关资源
    最近更新 更多