Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在dropwizard中验证XML实体_Java_Xml_Validation_Jersey_Dropwizard - Fatal编程技术网

Java 在dropwizard中验证XML实体

Java 在dropwizard中验证XML实体,java,xml,validation,jersey,dropwizard,Java,Xml,Validation,Jersey,Dropwizard,我已经设置了dropwizard 0.7.1,当使用json时,@valid注释可以正常工作,并且在HTTP响应中出现422个错误 如果我更改资源并添加jaxb绑定以使用XML,验证将永远不会生效。 支持吗 我尝试手动实例化hibernate验证器,它正确地检测到错误 谢谢你我在我的用户类中添加了这个方法,它的验证工作正常。在我的junit测试中,javax.validation.ConstraintViolationException是使用给定的错误消息引发的。我使用DW0.7.1 .

我已经设置了dropwizard 0.7.1,当使用json时,
@valid
注释可以正常工作,并且在HTTP响应中出现422个错误

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

我尝试手动实例化hibernate验证器,它正确地检测到错误


谢谢你

我在我的用户类中添加了这个方法,它的验证工作正常。在我的junit测试中,javax.validation.ConstraintViolationException是使用给定的错误消息引发的。我使用DW0.7.1

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

只有一个问题仍然让我困惑。我不能用我自己的方式来命名这个方法。重要的是,如果类名为user\u name,则验证方法必须是isUserName()。尝试了其他方法名称,但出现了一个错误。

我最终编写了一些MessageBodyProviders,它们包装了JAXB方法名称并添加Dropwizard验证:


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

Jackson还支持Jaxb和Jackson注释的XML POJO。您还可以查看我在其中编写的一个示例,其中扩展了JacksonJaxbXMLProvider,这是我最初的解决方案(也是我的灵感),但我发现Jackson不是JAXB(默认情况下,在dropwizard中是打开的,没有验证)Jackson应该通过定义适当的内省器来支持JAXB注释:我自己也没有尝试过,以后可能会在我的库中编写一些测试。