GWT полиморфные списки с @ExtraTypes
У меня есть небольшая проблема со списком, который содержит различные типы элементов, и я хотел бы увидеть, сталкивался ли кто-либо из вас с этой проблемой раньше. Проблема должна быть решена с помощью @ExtraTypes, но она не работает для меня, поэтому я думаю, что я не использую ее правильно. Итак, сценарий таков (имена бинов изменены для ясности):
ГЕНЕРАЛЬНЫЙ:Я использую GWT 2.5 с RequestFactory.Серверный:У меня есть RootBean, который содержит, помимо прочего,ListЭтот ChildBean содержит некоторые примитивные атрибуты.ChildBean также расширен с помощью MoreSpecificChildBean, который наследует все родительские атрибуты и добавляет еще несколько.RootBean заполняет свой список элементами типа ChildBean и MoreSpecificChildBean в зависимости от некоторой логики.СТОРОНА КЛИЕНТА:
IRootBeanProxy - это ValueProxy со следующими аннотациями:
@ProxyFor (value = RootBean.class) @ExtraTypes ({IMoreSpecificChildBeanProxy.class})
и содержит список
List getChildren ();IChildBeanProxy является ValueProxy:
@ProxyFor (value=ChildBean) public interface IChildBeanProxy extends ValueProxyIMoreSpecificChildBeanProxy является ValueProxy:
@ProxyFor (value=MoreSpecificChildBean) public interface IMoreSpecificChildBeanProxy extends IChildBeanProxyу контекста запроса есть метод, который возвращает запрос, и я также добавил аннотацию @ExtraTypes здесь:
@Service (value = CompareService.class, locator = SpringServiceLocator.class) @ExtraTypes ({IChildBeanProxy.class, IMoreSpecificChildBeanProxy.class}) public interface ICompareRequestContext extends RequestContext { Request compare (Integer id1, Integer id2);Вопрос
Предположительно, с этими аннотациями RF должен знать о существовании полиморфных унаследованных классов, но все, что я получаю в клиенте, это IRootBeanProxy со списком элементов IChildBeanProxy. Этот список включает в себя MoreSpecificChildBean, но в форме IChildBeanProxy, так что я не могу отличить его от других. Поэтому мне интересно, что я делаю неправильно, если я устанавливаю аннотацию ExtraTypes в неправильном месте или что-то в этом роде.
Кто-нибудь?
Спасибо за помощь !!