3

Spring3のアノテーションによるWebコントローラーのマッピングに本当に感謝しています

私は次のような署名を持つコントローラーをたくさん持っています:

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

しかし、私の問題は、処理後にBindingResultsを通過するインターセプターを作成したいということです-HttpRequestまたはHttpResponseからそれらを取得するにはどうすればよいですか?

インターペターメソッドは同様のシグネチャを持つため

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

2 に答える 2

8

コントローラメソッドの実行がBindingResultという名前のモデル属性として保存されたBindingResult.MODEL_KEY_PREFIX + <name of the model attribute>後、後のモデル属性はリクエスト属性にマージされます。したがって、マージする前に、使用をマージした後、Hurda自身の答えを使用できます。

request.getAttribute(BindingResult.MODEL_KEY_PREFIX + "solicitation")
于 2010-10-07T22:22:31.680 に答える
3

@Axtavtの大きな助けを借りて、postHandleメソッドでModelAndViewからBindreusltを取得できるという結論に達しました。

void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
  String key = BindingResult.MODEL_KEY_PREFIX + "commandName";
  BindingResult br = (BindingResult) modelAndView.getModel().get(key);
}
于 2010-10-13T14:10:42.083 に答える