我使用SingleUploader
上传文件。我在上传开始时设置的隐藏字段很少。上传工作正常,但是当我再次上传时,旧的隐藏值不会被清除。相反,隐藏的值会被追加。 SingleUploader#clear()
似乎可用于清除值,但它也会从现有表单中删除发送 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 将隐藏值发送到服务器?
答案 0 :(得分:1)
使用isVisible()
方法找出需要清除的组件。迭代所有的孩子,并根据那里的可见性清除价值观。
您可以使用instanceof Hidden
仅在迭代所有孩子时查找隐藏的组件。
答案 1 :(得分: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();
}
}
答案 2 :(得分:0)
你所描述的是图书馆中的一个错误,uploader.clear()
应该做的工作,所以你不必手工完成。
随意打开issue,我会在下一个gwtupload版本中修复它。