Spring 3 web request interceptor - how do I get BindingResult?

℡╲_俬逩灬. 提交于 2019-12-31 01:39:33

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!