问题
I realy appreciate Spring 3 anoation driven mapping of Web Controllers
I have a lot of Controllers with signatures like:
@RequestMapping(value = "solicitation/create",method = RequestMethod.POST)
public String handleSubmitForm(Model model, @ModelAttribute("solicitation") Solicitation solicitation, BindingResult result)
But my issue is, that I want to write an interceptor that would ho through BindingResults after processing - how do I get them from HttpRequest or HttpResponse?
as intercpetor methods are with alike signature
public boolean postHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
回答1:
After execution of controller method BindingResult is stored as a model attribute named BindingResult.MODEL_KEY_PREFIX + <name of the model attribute>, later model attributes are merged into request attributes. So, before merging you can use Hurda's own answer, after merging use:
request.getAttribute(BindingResult.MODEL_KEY_PREFIX + "solicitation")
回答2:
So with big help from @Axtavt I came to conlusion, that you can get to Bind reuslt from ModelAndView in postHandle method:
void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
String key = BindingResult.MODEL_KEY_PREFIX + "commandName";
BindingResult br = (BindingResult) modelAndView.getModel().get(key);
}
来源:https://stackoverflow.com/questions/3886065/spring-3-web-request-interceptor-how-do-i-get-bindingresult