2010-09-23 48 views
1

基本上,我有一些模型都使用JAXB。然而,我有一些高度自定義的功能轉換爲JSON並返回,所以我想寫我自己的MessageBodyReader/Writer來爲我完成這項工作。我如何告訴Jersey使用我的MessageBodyReader代替使用JAXB?

現在,寫作部分完成了:如果我從REST資源中返回其中一個模型,它會通過我的作者。但是,當我嘗試接受一個FormParam作爲模型時,它並沒有使用我的MessageBodyReader,而是嘗試使用JAXB解組(它失敗了)。

那麼,我如何告訴澤西島使用我的閱讀器?

public TestModel testProvider(@FormParam("model") TestModel input){ //doesnt work 
    return new TestModel(); //this part works! 
} 
+0

MessageBodyReaders是消耗整個郵件正文。他們不習慣消費個人形式的價值觀。如果整個消息是您的模型,則使用「TestModel輸入」而不使用@FormParam。 – 2010-09-30 16:57:40

回答

0

由於您的作者作品,但您的讀者沒有,我猜你剛剛錯過了你的配置中的東西。有些事情要檢查:

  • 您是否對讀者有@Provider註釋?
  • 您是否正確地在讀者上實現了isReadable方法?
  • 您在閱讀器上是否有適當的@Consumes註釋,它的媒體類型是否與您的服務方法中指定的媒體類型相匹配?
1
  1. 標記爲@Provider
  2. 配置添加到你的web.xml EX:


<init-param><param-name>com.sun.jersey.config.property.packages</param-name> <param-value> your.package.that.contains.the.provider </param-value> </init-param>

相關問題