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 ) он начинает работать, поэтому я знаю, что код моего сервера в порядке.
Кто-нибудь знает, как правильно это реализовать?
Спасибо!