gwtupload:添加隐藏值

gwtupload:添加隐藏值,gwt,gwt-platform,gwtupload,Gwt,Gwt Platform,Gwtupload,我使用SingleUploader上传文件。我在开始上传时设置了几个隐藏字段。上传工作正常,但当我再次上传时,旧的隐藏值不会被清除。相反,隐藏的值被追加SingleUploader#clear()似乎可以清除值,但它也会从现有表单中删除Send按钮 getView().getUploader().addOnStartUploadHandler(new IUploader.OnStartUploaderHandler() { @Override public vo

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

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将隐藏值发送到服务器?

使用
isVisible()
方法找出需要清除的组件。遍历所有子项,并基于它们的可见性清除值

您只能在迭代所有子级时使用
instanceof Hidden
查找隐藏组件


阅读更多关于

我想出了一个解决办法。我在完成和取消上传时调用
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();
    }
}

您描述的是库中的一个bug,
uploader.clear()
应该完成这项工作,这样您就不必手动完成


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

我没试过这个。但是谢谢+1.方法<代码>isVisible()
在这里不是必需的,但隐藏的实例将完成此任务。