Mon environnement: application multi-utilisateur avec serveur et client. Le serveur sait quel champ est actuellement utilisé et ne peut pas être modifié par un autre utilisateur.Comment éviter d'éditer la même valeur dans un formulaire dans un environnement multi-utilisateur?
J'ai un formulaire avec plusieurs JComponents comme JCheckBox, JTextField, JTextArea et JComboBox. Le problème est que je veux contrôler si l'utilisateur est autorisé à modifier la valeur du champ ou non. Lorsque l'utilisateur n'est pas autorisé à modifier le champ, le composant n'est pas autorisé à passer en mode édition.
Par exemple: L'utilisateur A modifie une valeur de champ de texte. Maintenant, l'utilisateur B veut éditer la même valeur. Il clique sur le même champ de texte et à ce stade, je veux m'assurer que le champ de texte ne passe pas en mode édition.
Quelqu'un a une bonne idée où le bon endroit est pour ce contrôle? Dois-je implémenter une vérification dans chaque composant ou est-ce qu'il y a peut-être une solution qui convient à tous les composants JComponents dans mon formulaire?
Merci
Exactement, pour éviter l'accès simultané, je préférerais que les composants du formulaire puissent vérifier par eux-mêmes si le champ est actuellement édité ou non. Le serveur sait déjà quels champs sont actuellement modifiés, les composants doivent donc attendre la réponse du serveur. Mon problème est que je ne sais pas quand (ou où?) Le composant doit demander au serveur s'il est autorisé à éditer la valeur, particulièrement cette vérification doit être faite avant de changer dans son mode d'édition. – Seffel
Le problème est que peu importe où vous demandez. Il n'y a pas de moyen "normal" de synchroniser les threads entre les processus, donc vous devriez toujours être en mesure d'attraper la situation lorsque vous autorisez l'utilisateur à éditer le champ et ensuite découvrir qu'il n'avait pas les droits pour le faire. Vous pouvez également désactiver tous les champs et chaque fois que l'utilisateur clique sur le champ, vérifiez si le champ n'est pas en cours de modification par un autre utilisateur. Mais cela rend l'application très peu réactive. – AlexR