私は、ResourceDelegateを使用してクライアントとサーバーの間のインターフェイスを共有するgwtpをRESTサービスで使用しています。瞬間、すべてうまく動作します。gwtp + RESTを使用してクライアントサイドで例外を処理する
私はクライアントサイドで例外処理を追加したいと思います。正式なドキュメント、carstoreサンプル、複数の投稿を読んだ後、私はまだフレームワークによって何が行われているのか、何が残っているのか疑問に思っています。だから、
、一瞬のために、サーバ側で、私が春を使用してREST簡単に、私のリソースは次のようになります。 インタフェース:
package ***.shared.rest;
@Path("books")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public interface BookResources {
@GET
BookDTO getBook(@PathParam("id") Integer bookId) throws BookKeyDecodingException;
}
実装:
package ***.server.rest;
@Component
@Transactional(readOnly = true)
public class BookResourcesImpl implements BookResources {
@Autowired
private BookService bookService;
@Autowired
private DtoFactory dtoFactory;
@Override
public BookDTO getBook(String bookKey) throws BookKeyDecodingException {
BookDTO bookDTO = BookKeyUtils.decode(supplementKey);
BookModel bookModel = dtoFactory.convertSupplementSuggestionDTO(suggestionDTO);
return bookService.getBook(bookDTO.getId());
}
}
BookKeyDecodingException
が入っています***。shared.exceptionパッケージであり、シリアライズ可能です。
、私のプレゼンターは私resourceDelegateを使用します。
package ***.client.application.book;
public class BookPresenter {
...
private void fetch() {
clearSlot(SLOT_BOOK);
try {
bookDelegate.withCallback(new AsyncCallback<BookDTO>() {
@Override
public void onFailure(Throwable caught) {
// TODO Auto-generated catch block
**???**
}
@Override
public void onSuccess(BookDTO result) {
for (CahierDTO cahier : result.getPages()) {
...
}
}
}).getBook(bookKey);
} catch (BookKeyDecodingException e) {
**???**
}
}
}
そして、私はまだ思ったんだけど:
- それはcatch節に落ちるのでしょうか?
- onFailure()メソッドには?
- どれもありませんか?
- サーバー側でエラー状態と一部の 例外シリアル化を管理するとしますか、これはすべて魔法ですか?今、私は解決策を得たが、私はそれが最高のものだか分からないが、私はそれが誰かを助けるかもしれないと思う...
私はどの大きな魔法を見つける(多くなかったので
補遺:この構成では、汎用的な例外ではなく、BookKeyDecodingException 1とONFAILURE()メソッドの例外の秋と... –