Spring 3 intercettore web richiesta - come faccio a ottenere BindingResult?
-
28-09-2019 - |
Domanda
Mi sono davvero apprezzo Spring 3 anoation guidato mappatura dei controllori web
Ho un sacco di controllori con firme come:
@RequestMapping(value = "solicitation/create",method = RequestMethod.POST)
public String handleSubmitForm(Model model, @ModelAttribute("solicitation") Solicitation solicitation, BindingResult result)
Ma il mio problema è che voglio scrivere un intercettore che avrebbe Ho attraverso BindingResults dopo l'elaborazione - come faccio ad ottenere loro di HttpRequest o HttpResponse
?come metodi intercpetor sono con firma uguali
public boolean postHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
Soluzione 2
Quindi, con grande aiuto da @Axtavt sono venuto a conlusion, che si può arrivare a Bind reuslt da ModelAndView nel metodo postHandle:
void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
String key = BindingResult.MODEL_KEY_PREFIX + "commandName";
BindingResult br = (BindingResult) modelAndView.getModel().get(key);
}
Altri suggerimenti
Dopo l'esecuzione del metodo di controllo BindingResult
viene memorizzato come un attributo di modello denominato BindingResult.MODEL_KEY_PREFIX + <name of the model attribute>
, attributi modello successivi vengono uniti in attributi di richiesta. Quindi, prima di fondersi è possibile utilizzare proprio la risposta di Hurda, dopo l'uso, la fusione:
request.getAttribute(BindingResult.MODEL_KEY_PREFIX + "solicitation")