【问题标题】:Not correct uploading with gwt upload使用 gwt 上传不正确
【发布时间】:2014-10-07 13:21:06
【问题描述】:

我的 gwt-upload 有问题:我需要 onChange Upload 才能从 db 获取我的对象;如果存在,Web 应用可以使用 Servlet 上传文件,否则会显示警报。

带有注释的代码只在带有“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);

【问题讨论】:

  • 您需要在gwtupload documentation 上阅读更多内容。您没有正确使用它。此外,您在覆盖的 onChange 方法中进行的调用是异步的,这意味着应用程序不会等待您的对象出现在客户端上,而是会继续进一步执行。
  • 是否有避免这种情况的解决方法? @pratZ

标签: java servlets gwt gwtupload


【解决方案1】:

您可以通过添加上传按钮并在服务器调用成功时提交上传表单来解决此问题。这是有关如何执行此操作的概述。阅读 gwtupload documentation 在 web.xml 中添加 servlet 映射。

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
                }
            }
     });
}

【讨论】:

    猜你喜欢
    • 2015-09-20
    • 2018-06-18
    • 2013-12-22
    • 1970-01-01
    • 2018-01-15
    • 2013-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-10-08
    相关资源
    最近更新 更多