0

私はGWTプロジェクトに取り組んでおり、正常に実行されているように見えるいくつかの無効なリモートサービスがありますが、クライアント側では、onFailure()メソッドを起動することになります。例外はどこにもスローされず、期待される動作がバックエンドで観察されます。何がうまくいかないのかわかりません。関連するコードは次のとおりです。

インターフェイスと実装...

@RemoteServiceRelativePath("DeleteSearchService")
public interface DeleteSearchService extends RemoteService {
    /**
     * Utility class for simplifying access to the instance of async service.
     */
    public static class Util {
        private static DeleteSearchServiceAsync instance;
        public static DeleteSearchServiceAsync getInstance(){
            if (instance == null) {
                instance = GWT.create(DeleteSearchService.class);
            }
            return instance;
        }
    }

    public void delete(SearchBean search);
}

public interface DeleteSearchServiceAsync {
    public void delete(SearchBean bean, AsyncCallback<Void> callback);
}

public class DeleteSearchServiceImpl extends RemoteServiceServlet implements DeleteSearchService {

    private static final long serialVersionUID = 1L;

    @Override
    public void delete(SearchBean search) {
        try {

            Connection conn = SQLAccess.getConnection();
            String sql = "DELETE FROM `searches` WHERE `id`=?";

            PreparedStatement ps = conn.prepareStatement(sql);
            ps.setInt(1, search.getSearchId());

            ps.execute();

            sql = "DELETE FROM `searchsourcemap` WHERE `search-id` = ?";

            ps = conn.prepareStatement(sql);
            ps.setInt(1, search.getSearchId());

            ps.execute();

            return;

        } catch (Exception e) {
            // TODO Log error
            e.printStackTrace();
        }
    }
}

市外局番...

private class DeleteListener implements ClickListener {
        public void onClick(Widget sender) {
            DeleteSearchServiceAsync dss = DeleteSearchService.Util.getInstance();

            SearchBean bean = buildBeanFromGUI();

            dss.delete(bean, new AsyncCallback<Void>(){

                //@Override
                public void onFailure(Throwable caught) {
                    // TODO log
                    SearchNotDeleted snd = new SearchNotDeleted();
                    snd.show();
                }

                //@Override
                public void onSuccess(Void result) {
                    SearchDeleted sd = new SearchDeleted();
                    sd.show();
                    searchDef.getParent().removeFromParent();                   
                }

            });
        }
    }

私は500行のコードのように投稿するのが苦手だと知っていますが、昨日からこれを見つめているので、どこが間違っているのかわかりません。たぶん2番目の目が役立つでしょう...

ありがとう、ブライアン

4

1 に答える 1

0

LGTM怖いです。

ホストモードを使用していますか、それとも本格的なブラウザを使用していますか?切り替えてみて、それが役立つかどうかを確認できます。

また、それを聞いて、 whenが呼び出されたときに//TODO実行すると役立つ場合があります。GWT.logonFailure

于 2009-05-29T20:39:49.317 に答える