【问题标题】:Validate XML entities in dropwizard在 dropwizard 中验证 XML 实体
【发布时间】:2014-10-03 16:21:50
【问题描述】:

我已经设置了 dropwizard 0.7.1,@valid 注释在使用 json 时可以正常工作,我在 HTTP 响应中收到 422 错误。

如果我更改资源并添加 jaxb 绑定以使用 XML,验证永远不会启动。 支持吗?

我尝试手动实例化一个休眠验证器,它正确检测到错误。

谢谢

【问题讨论】:

    标签: java xml validation jersey dropwizard


    【解决方案1】:

    我在我的用户类中添加了这个方法,它的验证工作。在我的 junit 测试中,javax.validation.ConstraintViolationException 与给定的错误消息完全相同。我用的是 DW 0.7.1!

        ...
        @ValidationMethod(message="user_name is null or empty")
        public boolean isUserName() {       
            if (Strings.isNullOrEmpty(user_name)) {
                return false;
            } else {
                return true;
            }
        }
        ...
    

    只有一个问题让我感到困惑。我不能以我自己的方式命名方法。重要的是,如果类 attibut 命名为 user_name,则验证方法必须是 isUserName()。尝试了其他方法名,结果报错。

    【讨论】:

      【解决方案2】:

      我最终编写了一些 MessageBodyProviders 来包装 JAXB 并添加 Dropwizard 验证:https://github.com/soulrebel/dropwizard-jaxb

      我发布了初始版本。有一天我可能会添加一些测试并将其发布到 Maven。

      【讨论】:

        【解决方案3】:

        Jackson 还支持 Jaxb 和 Jackson 注释的 XML POJO。您还可以查看我在 https://github.com/yunspace/dropwizard-xml 中编写的示例,该示例扩展自 JacksonJaxbXMLProvider

        【讨论】:

        • 那是我最初的解决方案(也是我的灵感),但我发现 Jackson 不是 JAXB(默认情况下,它在 dropwizard 中没有验证)并且有一些东西坏了。
        • Jackson 应该通过定义适当的自省器来支持 JAXB 注释:wiki.fasterxml.com/JacksonJAXBAnnotations 我自己也没有尝试过,以后可能会在我的库中编写一些测试。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-02-10
        • 2017-03-15
        相关资源
        最近更新 更多