La solution à la deuxième exigence de clic pour télécharger le fichier est l'auditeur du bouton . Comme dans mon cas, j'ai l'écouteur de clic du bouton dans lequel FileDownloader étend le bouton. Mais il devrait être sans écouteur seulement car FileDownloader a son propre mécanisme pour gérer les actions de l'écouteur.
Ici, le premier clic sur le bouton est géré par clickListener et seulement en cela, fileDownloader étend le bouton de téléchargement qui contient toutes les fonctionnalités de téléchargement du fichier et cette fonctionnalité se produit uniquement lorsque l'événement click passe par FileDownloader. donc pour la prochaine fois, cliquez sur FileDownloader comme maintenant son extension du bouton.
public static Button getDownloadButton(String fileName, String fileAsString, String caption) {
// caption
Button dwnButton = new Button(caption, VaadinIcons.DOWNLOAD);
dwnButton.addClickListener(listener -> {
StreamResource resource = createResource(fileName, fileAsString);
FileDownloader fileDownloader = new FileDownloader(resource);
fileDownloader.extend(dwnButton);
});
return dwnButton;
}
Ici, fileDownloader étend déjà le bouton et dispose de toutes les ressources de flux. Ainsi, au premier clic, seul le téléchargement est appelé.
public static Button getDownloadButton(String fileName, String fileAsString, String caption) {
// caption
Button dwnButton = new Button(caption, VaadinIcons.DOWNLOAD);
StreamResource resource = createResource(fileName, fileAsString);
FileDownloader fileDownloader = new FileDownloader(resource);
fileDownloader.extend(dwnButton);
return dwnButton;
}
Pouvez-vous ajouter le code où le bouton est créé? –
Je me souviens que cela m'arrivait il y a un certain temps, lors de la définition de la ressource de flux à l'intérieur du bouton d'écoute de clic. Est-ce votre cas aussi? – Morfic
J'ai aussi eu la même erreur. Je pense que je me souviens que le flux était en train d'être réglé * après * l'événement de téléchargement, c'est pourquoi vous avez besoin d'un second clic. Cela peut être test de changer le fichier que vous téléchargez après un clic. – Shirkam