2010-03-21 5 views
0

J'utilise Spring MVC (via Spring Roo) pour créer une petite application web pour administrer des personnes. Dans la page de création d'une personne, le bean Person est utilisé comme objet de support de formulaire (clé "person" dans la carte modèle). Je voudrais ajouter quelques attributs à la carte modèle qui peuvent être modifiés par l'utilisateur dans le formulaire de création. Fondamentalement, j'essaie d'ajouter un booléen, de sorte que je peux contrôler quelle page est affichée après que l'utilisateur appuie sur le bouton de soumission.Accéder et modifier les attributs/objets qui ne font pas partie du bean back du formulaire

J'essaie de modifier la Boolean (touche « myBoolean » sur la carte du modèle) en utilisant une simple case à cocher:

<form:checkbox id="_myboolean_id" path="myBoolean"/> 

Cependant, comme je suis nouveau à Spring MVC J'ai quelques difficultés ici. L'objet booléen n'est pas un attribut de l'objet de support de formulaire. Donc, si je tente d'y accéder l'exception suivante est levée (bien sûr):

propriété non valide « myBoolean » de haricot classe [de.cm.model.Person]: Bean propriété « myBoolean » est pas lisible ou a une méthode getter invalide: Est-ce que le type de retour du getter correspond au type de paramètre du setter?

Est-il possible d'accéder directement à une valeur de la carte modèle? La seule solution que je puisse imaginer maintenant est une sorte d'objet wrapper autour de la classe Person et mes attributs supplémentaires qui sont utilisés comme nouvel objet de support de formulaire. Cependant, c'est plus de travail pour une tâche simple à mon humble avis. Avez-vous une meilleure solution?

Répondre

2

Vous pouvez créer champ de formulaire personnalisé:

<input type="checkbox" name="myBoolean"/> 

et spécifiez paramètre supplémentaire dans la méthode post contrôleur:

public ModelAndView savePerson(@ModelAttribute("person") Person person, @RequestParameter ("myBoolean") Boolean myBoolean) 
Questions connexes