0

gwt-upload に問題があります。db からオブジェクトを取得するには onChange Upload が必要です。存在する場合、Web アプリはサーブレットを使用してファイルをアップロードできます。存在しない場合、アラートが表示されます。

コメント付きのコードは、'It works' コメントのある位置でのみ実行されます。

else ブロックで実行されないのはなぜですか?

final MultiUploader upload = new MultiUploader(FileInputType.BUTTON);
upload.addOnChangeUploadHandler(new OnChangeUploaderHandler() {

    @Override
    public void onChange(IUploader uploader) {
        myService.getMyObject(name, new AsyncCallback<List<Object>>() {

            @Override
            public void onFailure(Throwable caught) {
                Window.alert("Something");
            }

            @Override
            public void onSuccess(List<Object> listMyObject) {
                if(listMyObject.size() == 0) {
                    Window.alert("Error.");
                } else {
                    //It doesn't works.
                    String url = GWT.getModuleBaseURL() + "upload?nameObject=" + name;
                    upload.setServletPath(url);
                }
            }
        });
    }
});
//It works.
String url = GWT.getModuleBaseURL() + "upload?nameObject=" + name;
upload.setServletPath(url);
4

1 に答える 1

0

これを解決するには、アップロード ボタンを追加し、サーバー呼び出しの成功時にアップローダー フォームを送信します。ここでは、その方法の概要を示します。web.xml にサーブレット マッピングを追加する方法については、gwtupload のドキュメントを参照してください。

Uploader uploader = new Uploader(FileInputType.BROWSER_INPUT);
uploader.setServletPath("myservletpath");
uploader.setAutoSubmit(false);
uploader.setEnabled(true);

Button uploadButton = new Button("Upload");
uploadButton.addClickHandler(new ClickHandler()){
    myService.getMyObject(name, new AsyncCallback<List<Object>>() {

            @Override
            public void onFailure(Throwable caught) {
                //do something
            }

            @Override
            public void onSuccess(List<Object> listMyObject) {
                //do something if condition satisfies then submit
                if(conditionSatifies){
                    uploader.submit();
                }else{
                    //do something, prompt a message
                }
            }
     });
}
于 2014-10-08T11:07:11.073 に答える