2009-05-14 5 views
1

Je souhaite ajouter des données au modèle s'il n'y a pas eu d'erreurs de validation. Je pensais que je pouvais le faire en onBindAndValidate, où j'ai l'accès à l'erreur objet, qui contient le modèle:Mettre les valeurs dans error.getModel dans onBindAndValidate

errors.getModel().putAll(map); 

J'ai aussi essayé de mettre les valeurs une par une à l'aide put(key, value) mais sans succès.

Que puis-je faire?

Répondre

0

Je peux faire cela après validation processFinish:

return showPage(request, errors, getCurrentPage(request)) 
     .addAllObjects(map); 
1

Vous ne pouvez pas ajouter directement des données au modèle de BindException. La raison pour laquelle vous n'êtes pas en mesure de le faire:

errors.getModel().putAll(map); 

est parce que errors.getModel() crée et retourne une nouvelle carte à chaque fois que vous l'appelez. Ainsi, dans votre exemple onBindAndValidate, vous obtenez un nouveau modèle de l'objet BindException, en ajoutant vos données au modèle, puis en le rejetant. Dans votre deuxième exemple, vous ajoutez les données à un modèle, puis vous le renvoyez.

Autre usage courant lors de l'utilisation du modèle de BindException des méthodes de contrôleur ressemblerait à ceci:

Map errorModel = errors.getModel(); 
errorModel.putAll(otherMap); 
return new ModelAndView("viewName", errorModel); 

Voir aussi: BindException#getModel()

Questions connexes