Comment faire pour démarrer un téléchargement de fichier dans vaadin sans bouton?
Je sais qu'il est vraiment facile de créer un FileDownloader
et appel étendre avec une Button
. Mais comment puis-je commencer un téléchargement sans Button
?
Dans ma situation spécifique droite maintenant, j'ai un ComboBox
et le fichier que je voudrais envoyer à l'utilisateur est généré après la modification de sa valeur, en fonction de l'entrée. Le fichier doit être envoyé immédiatement, sans attendre pour un autre clic. Est facilement possible?
Merci
raffael
OriginalL'auteur raffael | 2013-12-05
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé une solution moi-même. En fait deux.
La première utilise la méthode dépréciée Page.open()
La javadoc ici mentionne un peu de mémoire et des problèmes de sécurité que le motif de marquage-elle obsolète
Dans la seconde, j'ai essayer d'aller autour de cette méthode dépréciée par l'inscription de la ressource dans le DownloadComponent. Je serais heureux si un vaadin commentaires d'experts, cette solution.
Remarque: je n'ai pas vraiment de permettre à l'utilisateur d'ouvrir tous mes fichiers sur le serveur, vous devez pas faire qui soit. C'est juste pour la démonstration.
vous pouvez contrôler le comportement en définissant la nomfenêtre paramètre dans la Page.open() voir: vaadin.com/api/7.4.7/com/vaadin/server/...
Bien sûr, mais il n'ouvre pas le "Enregistrer sous" navigateur de Fichiers
il est possible que le navigateur bloque les popup
Comment définissez-vous d'où vient le fichier est téléchargé?
OriginalL'auteur raffael
Voici mon travail. Il fonctionne comme un charme pour moi. Espérons qu'il saura vous aider.
Créer un bouton et de le masquer en Css (PAS par code: bouton.setInvisible(false))
Dans votre thème, ajouter cette règle pour masquer la
downloadInvisibleButton
:Lorsque l'utilisateur clique sur menuItem: étendre la
fileDownloader
à ladownloadInvisibleButton
, puis de simuler le clic sur ledownloadInvisibleButton
par JavaScript.Lorenzo: Avant d'appeler extend(), vous devez enlever toutes les anciennes extensions du bouton.
OriginalL'auteur
Que je ne suis pas autorisé à faire des commentaires, j'ajoute ceci comme réponse.
Le problème avec le bouton caché est, que cela ne fonctionne pas sur les appareils équipés d'iOS. Je préfère utiliser la barre de menu et MenuItem, mais ce n'est pas encore pris en charge par Vaadin - voir Github question n ° 4057. Et la solution de contournement proposée lors de l'utilisation de la barre de menu et MenuItem aboutirait à l'aide de boutons cachés ...
OriginalL'auteur bingele28