GWT 2.4 приносит клиенту наследование сервиса ( выпуск 6234 , выпуск 6035 ).
Я долго ждал этого будущего,поскольку это экономит много дублированного кода на клиенте.Я начал его реализовывать, но так со смешанным успехом.
Это мой код:
public interface BaseEntityRequest<T>
{
Request<Void> put(T entity);
Request<List<T>> getAllOrderBy(String propertyName);
Request<List<T>> getRangeAndFilter(int limit,int offset, QueryInfoProxy queryInfo);
}
@Service(value = EgdDao.class, locator = DaoServiceLocator.class)
public interface EgdRequest extends RequestContext, BaseEntityRequest<EgdProxy>
{
Request<Void> exportToExcel(QueryInfoProxy queryInfo, String userName);
}
Пока getAllOrderBy
и getRangeAndFilter
работают нормально, но put(T entity)
не.
Я получаю следующую ошибку в консоли:
[ERROR] Unexpected error
java.util.NoSuchElementException
и это возвращается в сообщении onFailure ServerFailure:
Error 500 INTERNAL_SERVER_ERROR
HTTP ERROR 500
Problem accessing /gwtRequest. Reason:
INTERNAL_SERVER_ERROR
Единственная причинаЯ могу видеть, что метод put
не работает, когда другие работают, заключается в том, что он использует универсальный параметр T. Когда я перемещаю метод put
в интерфейсе EgdRequest
(используя EgdProxy
какпараметр вместо T) он начинает работать, поэтому я знаю, что мой серверный код в порядке.
Кто-нибудь знает, как правильно это реализовать?
Спасибо!