Czy zna ktoś jakąś rozsądną metodę resetowania Upload’a? Chciałbym zrobić czyszczenie formularza i nie wiem jak zmusić ten komponent żeby wrócił do stanu początkowego. Ze względu na sporą ilość handlerów wolałbym nie musieć go usuwać i wstawiać w jego miejsce nowej instancji…
Witaj Józefie
Niestety, w tym momencie podmiana instancji to jedyny sposób. Na poziomie JS i przeglądarki, element upload nie pozwala na ustawienie wartości ponieważ stanowiłoby to zagrożenie bezpieczeństwa; jedyna działająca metoda polega na podmianie elementu HTML na nowy, a tego komponent Upload w tym momencie nie obsługuje. Dzięki za zwrócenie na to uwagi – zgłoszę błąd na dev.vaadin.com.
W międzyczasie możesz rozważyć rozszerzenie istniejącej pary komponent/widget. Jeżeli jesteś zainteresowany w jaki sposób to zrobić, daj znać, to przedstawię pokrótce kroki.
Zbadałem sprawę. Jak się okazało, istnieje jeszcze inny sposób na zresetowanie elementu upload – należy zresetować element form (w HTML) który zawiera resetowany upload.
Dzięki tej wiedzy mogłem stworzyć rozszerzenie (Extension) które robi właśnie to – na żądanie resetuje upload, wykorzystując możliwość zresetowania formularza. Rozszerzenie dostępne jest jako add-on z Vaadinowego katalogu:
https://vaadin.com/directory#addon/resetupload-extension
Niestety, wyglada na to, ze reset nie dziala, kiedy upload skonczy z bledem :-(.
Moja sytuacja jest taka: uzytkownik sprobuje nagrac plik a jesli sie to nie uda, moze zmenic parametry i sprobowac znowu. Niestety, kiedy juz raz komponent skonczy bledem przestaje dzialac, tzn. nie zmenia wybranego pliku a metoda
com.vaadin.ui.Upload.ChangeListener.filenameChanged(ChangeEvent) nie zostaje wywolana.