Comment faire pour désactiver / modifier le style du guichet bouton lien dans le onClick()
Dans un Guichet application, j'ai un tas de <button>
éléments dont je suis l'attaque d'un Link
composant. Maintenant, dans le onClick()
méthode du composant je veux désactiver ou modifier le style du bouton. Comment puis-je le faire? L'appel de setEnabled(false)
n'a aucun effet.
OriginalL'auteur Michael Borgwardt | 2011-05-07
Vous devez vous connecter pour publier un commentaire.
Utilisation répétée de onClick() fonctionnent sur le même objet en mémoire. Si vous n'êtes pas à l'aide d'Ajax, vous pouvez toujours maintenir un certain état à un anonyme sous-classe de Lien. Ensuite, vous pouvez utiliser onBeforeRender() et onComponentTag() pour modifier la façon dont il est affiché à chaque fois.
AttributeModifiers (ou d'autres comportements) ne sont pas bons pour le cas présent, car, si vous les ajoutez dans le onClick() la méthode, ils vont commencer en mettant sur le même lien pour chaque clic depuis qu'ils sont maintenus dans le cadre de la Liaison de l'état.
Votre Lien pouvez garder une trace de toutes sortes de l'état, permettant à votre onClick() la méthode pour activer/désactiver/modifier/etc répétées clics.
Vous pouvez également remplacer onBeforeRender(), isVisible(), et d'autres méthodes qui sont exécutées chaque fois que le lien est affiché sur la page. Le constructeur, onConfigure(), et d'autres sont exécutées une seule fois, peu importe combien de fois vous cliquez sur le bouton.
Comme indiqué dans la JavaDoc, remplaçant isEnabled et isVisible doit être utilisé avec prudence - si je le fais tout le temps. Juste être sûr que le coût de l'opération est très bon marché.
Même si cette solution est mentionné dans le guichet wiki, n'est-ce pas en quelque sorte comme réinventer la roue si le guichet prend en charge des trucs comme ça, hors de la boîte?
OriginalL'auteur jbrookover
Je ne pense pas que ce est une bonne idée de Guichet. Bien sûr, il pourrait être fait par la ruse, mais il est beaucoup plus simple:
isEnabled()
méthode pour renvoyer une valeur dérivée du modèle de la forme/composant.AttributeModifier
lorsque vous créez le composant, et l'utilisation d'un modèle informatique qui retourne une valeur calculée comme ci-dessus.Selon que vous choisissez, le principe est de laisser le Guichet "pull", le rendu de l'information plutôt que de les pousser explicitement.
OriginalL'auteur biziclop
La réponse fournie par Michael Borgwardt est presque correct.
Je voudrais ajouter, que vous devez utiliser le bouton HTML de l'élément au lieu de
<a>
(lien). Réponse originale à cette question peut être counfusing, parce que le Lien et le Bouton existent également dans le Guichet.OriginalL'auteur Vaclav Stengl
Je pense que AjaxCallDecorator doit être la classe que vous devez utiliser pour désactiver/modifier le style du bouton.
OriginalL'auteur fmucar
Le problème est que vous utilisez la Liaison. Désactivé les Liens de l'utilisation
<span>
au lieu de<a>/<button>
et sont entourés avec<em>
par défaut.À l'aide du Bouton composant set 'désactivé' attribut dans l'élément.
OriginalL'auteur martin-g
Prendre un coup d'oeil à SimpleAttributeModifier et AttributeAppender. En fonction de vos besoins réels l'un de ceux-ci devraient faire l'affaire. SimpleAttributeModifier ajoute ou remplace un attribut de Balise HTML qui a un prepresentation au guichet (remplace la classe css), tandis que AttributeAppender ajoute les attributs (ajoute une classe css). Cela devrait fonctionner pour l'activation/la désactivation des boutons, mais je n'ai pas essayé.
Exemple:
Pour Ajax, vous devrez ajouter le composant à la cible ainsi.
Exemple plus détaillé:
De code Java:
HTML correspondant:
Borgwardt Fonctionne pour moi... j'ai ajouté un exemple de travail pour y arriver...
OriginalL'auteur Nicktar