【问题标题】:Javax validation exception when migrating to Wildfly 8.1迁移到 Wildfly 8.1 时出现 Javax 验证异常
【发布时间】:2014-11-21 11:32:41
【问题描述】:

我收到以下异常:

javax.validation.ConstraintDeclarationException: HV000151: 覆盖另一个方法的方法不得更改参数约束配置

在 Wildfly 8.1 服务器上部署我的应用程序时。该项目在以前的 JBoss 7.1 应用服务器上部署并运行良好。我需要更改代码还是配置有问题?

【问题讨论】:

    标签: java validation migration wildfly


    【解决方案1】:

    如果将参数约束添加到覆盖或实现超类型方法的方法,则会引发 javax.validation.ConstraintDeclarationException。此行为是 Bean Validation 规范(请参阅 http://beanvalidation.org/1.1/spec/#constraintdeclarationvalidationprocess-methodlevelconstraints-inheritance)强制要求的,以遵守 Liskov 替换原则:

    例如下面的代码非法声明子类的参数约束,它会抛出上面的异常:

    public class OrderService {
    
    void placeOrder(String customerCode, Item item, int quantity) { [...] }
    } 
    
    public class SimpleOrderService extends OrderService {
    
    @Override
    public void placeOrder(
        @NotNull @Size(min=3, max=20) String customerCode,
        @NotNull Item item,
        @Min(1) int quantity) {
        [...]
    }
    

    }

    【讨论】:

      【解决方案2】:

      我在我的spring boot项目中遇到了同样的问题,你应该将覆盖方法中使用的验证注释移动到超类或接口中。

      【讨论】:

        【解决方案3】:

        我找不到任何配置来帮助解决这个问题,所以我从实现类中删除了参数约束,从而解决了这个问题。

        【讨论】:

        • 我描述了我为解决问题所采取的行动。你称它为“方式”与否无关紧要。
        猜你喜欢
        • 2021-02-02
        • 2020-08-30
        • 1970-01-01
        • 2016-03-01
        • 2014-04-23
        • 2016-07-29
        • 1970-01-01
        • 1970-01-01
        • 2015-10-17
        相关资源
        最近更新 更多