0

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を使用して非表示の値をサーバーに送信する他の方法はありますか?

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 に答える