2010-09-23 5 views
2

Utiliser Spring 3Spring tente de lier tous les champs

J'ai deux formes: l'ajout d'article et de l'article invalidant Je ItemAddEditCommand que les références article et d'autres données.

Ajout d'élément fonctionne très bien mais j'ai un problème avec l'élément invalidant. En général, il s'agit d'un formulaire d'édition contenant deux champs de formulaire: expirationDate et comment.

Dans le contrôleur j'utilise la même commande pour les deux actions. Malheureusement, Spring tente de lier tous les champs lorsque j'invalide. Lorsque je commence à invalider, j'applique ItemCommand avec Item instance qui contient tous les champs possibles (y compris id)

Lorsque l'utilisateur insère expireDate et commente et soumet le formulaire, tous les autres champs sauf expiresDate et comment sont annulés.

Y at-il une autre façon, sauf la création d'une autre commande

Répondre

3

Je pense que je l'ai trouvé.

@InitBinder(value = { INVALIDATE_ITEM_PARAM }) 
protected void initInvalidateItemBinder(WebDataBinder binder) { 
    DefaultBindInitializer.initBinder(binder); 
    binder.setAllowedFields("expireDate", "comment"); 
    binder.setValidator(validator); 
} 

Btw. Peut-être que n'importe qui peut me donner des indications sur la façon de se débarrasser de DefaultBindInitializer.initBinder (classeur); Cela initialise certains éditeurs de propriétés qui doivent être TOUJOURS utilisés. Peut-être un peu de haricot pour le rendre par défaut afin que je ne devrais pas appeler cette méthode tout le temps.

+1

Vous pouvez définir 'WebBindingInitializer' dans' AnnotationMethodHandlerAdapter', voir Petclinic: https://src.springframework.org/svn/spring-samples/petclinic/trunk/ – axtavt

Questions connexes