2014-10-03 81 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