Как я могу сказать Джерси использовать мой MessageBodyReader вместо JAXB? - PullRequest
1 голос
/ 23 сентября 2010

В принципе, у меня есть несколько моделей, которые используют JAXB.Тем не менее, у меня есть некоторые весьма настраиваемые функции для преобразования в JSON и обратно, поэтому я хочу написать свой собственный MessageBodyReader / Writer, чтобы выполнить эту работу за меня.

Прямо сейчас, часть записи завершена: если я верну одиниз моих моделей из ресурса REST, он проходит через моего автора.Но когда я пытаюсь принять модель в качестве FormParam, она не использует мой MessageBodyReader и вместо этого пытается демонтировать его, используя JAXB (что не получается).

Так как же я могу сказать Джерси использовать вместо этого мой Reader?

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

Ответы [ 2 ]

1 голос
/ 19 ноября 2011
  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>

0 голосов
/ 27 сентября 2010

Поскольку ваш писатель работает, а читатель - нет, я полагаю, вы просто что-то упустили в своей конфигурации. Некоторые вещи для проверки:

  • Есть ли у вас аннотация @Provider на вашем ридере?
  • Правильно ли вы внедрили метод isReadable в вашем ридере?
  • Есть ли у вас соответствующая аннотация @Consumes на считывателе, совпадает ли ее тип носителя с типом носителя, указанным в вашем методе обслуживания?
...