2010-10-07 6 views
3

Je vous remercie realy Spring 3 cartographie axée sur anoation des contrôleurs WebIntercepteur de requête web printemps 3 - comment obtenir BindingResult?

J'ai beaucoup de contrôleurs avec des signatures comme:

@RequestMapping(value = "solicitation/create",method = RequestMethod.POST) 
public String handleSubmitForm(Model model, @ModelAttribute("solicitation") Solicitation solicitation, BindingResult result) 

Mais mon problème est que je veux écrire un intercepteur qui serait ho par BindingResults après traitement - comment les obtenir à partir de HttpRequest ou HttpResponse?

que les méthodes de intercpetor sont avec la signature aussi bien

public boolean postHandle(HttpServletRequest request, HttpServletResponse response, Object handler) 

Répondre

1

donc avec une grande aide de @Axtavt je suis venu à conlusion, que vous pouvez obtenir à Liez reuslt de ModelAndView dans la méthode postHandle:

Où dans la documentation puis-je trouver de telles informations?
void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) { 
    String key = BindingResult.MODEL_KEY_PREFIX + "commandName"; 
    BindingResult br = (BindingResult) modelAndView.getModel().get(key); 
} 
8

Après l'exécution de la méthode de commande BindingResult est stockée sous forme d'un attribut de modèle nommé BindingResult.MODEL_KEY_PREFIX + <name of the model attribute>, plus tard les attributs du modèle sont fusionnés en demande attributs. Donc, avant de fusionner vous pouvez utiliser propre réponse Hurda, après l'utilisation de fusion:

request.getAttribute(BindingResult.MODEL_KEY_PREFIX + "solicitation") 
+0

(J'ai commencé avec Spring 3.0] – Hurda

+1

@Hurda: Accéder à 'BindingResult' sans fonctionnalités standard (telles que' 'tag) est un sujet plutôt avancé, donc le placement de' BindingResult' dans le modèle décrit dans son javadoc: http: //static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/validation/BindingResult.html – axtavt

+0

Donc je viens de tester ça et le BindResult aint dans les attributs de requête, mais dans le modèle. OK car ModelAndView fait partie de la signature void postHandle (requête HttpServletRequest, réponse HttpServletResponse, gestionnaire d'objet, ModelAndView modelAndView) – Hurda

Questions connexes