0

SingleUploader用于上传文件。我在开始上传时设置的隐藏字段很少。上传工作正常,但是当我再次上传时,旧的隐藏值不会被清除。相反,隐藏的值正在附加。SingleUploader#clear()似乎可以清除值,但它也会从现有表单中删除Send 。 Button

getView().getUploader().addOnStartUploadHandler(new IUploader.OnStartUploaderHandler() {

        @Override
        public void onStart(IUploader uploader) {
            if(validateForm()){
                String val1 = getView().getFirstFieldTxtBx().getValue().trim();
                String val2 = getView().getStartDateBx().getValue().toString();
                String val3 = getView().getEndDateBx().getValue().toString();

                uploader.add(new Hidden("first",val1), 0);
                uploader.add(new Hidden("second",val2),1);
                uploader.add(new Hidden("third",val3),2);
            }else{
                uploader.cancel();
            }
        }
    });

如何摆脱现有的隐藏值?或者有没有其他方法可以使用gwtupload将隐藏值发送到服务器?

4

3 回答 3

1

使用isVisible()方法找出需要清除的组件。遍历所有子项,并根据那里的可见性清除值。

instanceof Hidden只能在迭代所有子项时使用来找出隐藏的组件。

阅读更多关于在 GWT 中列出页面/面板的所有小部件

于 2014-04-04T19:01:36.817 回答
0

我想出了一个解决方法。我clearFormFields在完成和取消上传时调用该方法。

private void clearFormFields(SingleUploader uploader) {
    removeWidget(((FlowPanel)uploader.getForm().getWidget()).getWidget(2));
    removeWidget(((FlowPanel)uploader.getForm().getWidget()).getWidget(1));
    removeWidget(((FlowPanel)uploader.getForm().getWidget()).getWidget(0));
}

private void removeWidget(Widget w) {
    if(w instanceof Hidden){
        w.removeFromParent();
    }
}
于 2014-04-04T19:29:55.157 回答
0

您所描述的是库中的一个错误,uploader.clear()应该完成这项工作,因此您不必手动完成。

随意打开一个问题,我会在下一个 gwtupload 版本中修复它。

于 2014-04-05T18:03:12.403 回答