Dans une application basée sur Vaadin 8, je souhaite implémenter une commande qui supprime la valeur de tous les champs. J'ai fait ceci Using Binder. Lorsque l'utilisateur active la commande, un nouveau bean sera créé.Comment déterminer si un composant de l'interface utilisateur a été mis à jour dans Vaadin 8
@Override public void menuSelected(MenuBar.MenuItem selectedItem) {
controller.createNewBean();
Page.getCurrent().reload();
}
Je veux montrer une boîte de message à l'utilisateur qui avertit qu'en procédant toutes les valeurs pour tous les composants seront perdus. J'utilise un TabView et il y a relativement beaucoup de composants.
Je souhaite afficher ce message uniquement si l'utilisateur a modifié une valeur pour au moins un composant. Je me demande si Vaadin a quelque chose comme UI.getCurrent().isDirty()
ou un autre mécanisme pour déterminer si l'utilisateur a entré une nouvelle valeur à un composant?
Merci pour l'aide
Merci @Axel Meier. Il semble que le seul moyen est binder.hasChanges(). Le problème est que j'ai différents haricots et différents onglets et je dois être conscient de beaucoup de liants. J'utilise reload au lieu de readBrean à cause de cela aussi. – Govan
J'ai testé la mise en œuvre avec des changements de classeur. Cela ne fonctionne pas comme décrit dans la documentation. Voir ceci: https://vaadin.com/forum/#!/thread/14906891/15007809 – Govan
@Govan Merci pour vos commentaires. En effet 'hasChanges()' a plus de sens à utiliser en combinaison avec 'readBean()' et 'writeBean()'. Avec 'setBean()' les modifications sont automatiquement validées 'hasChanges()' retournerait false. Aussi avec 'setBean()' il n'y a plus moyen de restaurer les anciennes valeurs. –