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メソッドを移動すると ( T の代わりにパラメーターとして使用して)、動作するので、サーバー コードが正常であることはわかっています。EgdRequestEgdProxy
これを正しく実装する方法を知っている人はいますか?
ありがとう!