Wicket case à cocher qui soumet automatiquement sa valeur modifiée à l'objet domaine
Quelle est la façon la plus propre que je peux faire une case à cocher automatiquement soumettez le formulaire, il appartient au Guichet? Je ne veux pas d'inclure un bouton de soumission. La case à cocher est soutenu par un champ booléen dans un domaine d'objet (le"Compte" dans ce cas).
Exemple simplifié avec pertinence les parties omises:
EntityModel<Account> accModel = new EntityModel<Account>(Account.class, id);
PropertyModel<Boolean> model = new PropertyModel<Boolean>(accModel, "enabled");
CheckBox checkBox = new CheckBox("cb", model);
Form form = new Form("form");
form.add(checkBox);
add(form);
HTML:
<form wicket:id="form" id="form" action="">
<input wicket:id="cb" type="checkbox" />
</form>
Modifier: Pour préciser, mon but est juste de changer l'objet du domaine du domaine (-> valeur dans la base de données) lorsque la case à cocher est activée. Tout (propre, facile) de manière à réaliser que ce serait bien. (Je ne suis pas sûr si vous avez réellement besoin le formulaire à cet effet.)
source d'informationauteur Jonik
Vous devez vous connecter pour publier un commentaire.
Juste primordial wantOnSelectionChangedNotifications() pour la case—même sans écraser onSelectionChanged()—semble faire ce que je veux.
De cette façon, vous n'avez pas besoin de la forme sur Java côté, de sorte que le code ci-dessus devient:
N'hésitez pas à ajouter de meilleures solutions, ou une meilleure explication de ce qui se passe avec cette approche!
Modifier: Sur regarder de plus près, je suppose que la méthode de la Javadoc fait assez clairement pourquoi ce n'est ce que je voulais (l'emphase est mienne):
Alors que cela peut fonctionner, vous êtes beaucoup mieux d'utiliser AjaxCheckBox. Un anonyme sous-classe peut être câblé pour recevoir des événements immédiatement ainsi que d'apporter des modifications à l'INTERFACE utilisateur à l'extérieur de la case elle-même.
Dans cet exemple artificiel, le WebMarkupContainer serait rendue visible en synchronisation avec la valeur de la case.