Java 在dropwizard中验证XML实体
我已经设置了dropwizard 0.7.1,当使用json时,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 .
@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注释:我自己也没有尝试过,以后可能会在我的库中编写一些测试。