如何告诉Jersey使用我的MessageBodyReader而不是使用JAXB?

时间:2010-09-23 19:30:52

标签: jaxb jersey jax-rs

基本上,我有一些模型都使用JAXB。但是,我有一些高度自定义的功能可以转换为JSON并返回,所以我想编写自己的MessageBodyReader / Writer来为我完成这项工作。

现在,写作部分完成了:如果我从REST资源返回我的一个模型,它会通过我的编写器。但是当我尝试接受一个模型作为FormParam时,它不会使用我的MessageBodyReader,而是尝试使用JAXB(失败)解组它。

那我怎么告诉泽西岛改用我的读卡器?

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

2 个答案:

答案 0 :(得分:1)

  1. 标记为@Provider
  2. 将配置添加到您的web.xml EX:

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

答案 1 :(得分:0)

既然你的作家工作,但你的读者没有,我猜你刚刚错过了你的配置。有些事要检查:

  • 您的阅读器上是否有@Provider注释?
  • 您是否在阅读器上正确实现了isReadable方法?
  • 您是否在阅读器上有相应的@Consumes注释,其媒体类型是否与您的服务方法中指定的媒体类型相匹配?