2014-10-03 74 views
0

我有dropwizard 0.7.1设置和@valid注释在使用json时正常工作,并且在HTTP响应中出现422错误。在dropwizard中验证XML实体

如果我更改资源并添加jaxb绑定以使用XML,验证从未开始。 它是否受支持?

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

谢谢

回答

0

我最后写一些MessageBodyProviders该包裹JAXB的人,并添加Dropwizard验证:https://github.com/soulrebel/dropwizard-jaxb

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

0

我在我的用户类中添加了这个方法,它的验证工作。在我的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()。尝试其他方法名称,但后来发生错误。

0

Jackson还支持Jaxb和Jackson注释的XML POJO。你也可以查看我写在https://github.com/yunspace/dropwizard-xml中的一个例子,它扩展了JacksonJaxbXMLProvider

+0

这是我最初的解决方案(也作为灵感),但是我发现Jackson不是JAXB(默认情况下没有在dropwizard中验证)和有几件事情打破了。 – 2014-12-05 14:16:29

+0

杰克逊应该通过定义合适的introspectors来支持JAXB注释:http://wiki.fasterxml.com/JacksonJAXBAnnotations我自己也没有尝试过,也许稍后会在我的库中写一些测试。 – yunspace 2014-12-07 23:07:36