背景:Webプロジェクトが
SpringMvc
フレームワークは、前後 別離の再構築するために必要とする使用しています
。フロントエンドはReact
を使用する予定で、バックエンドのControllers
のどのものがjsp
ビューを返すために使用されたかは、jsonObject
を返す必要があります。jsp
からModelMap
に渡されたデータは、json
に転送され、Response
に書き戻される必要がありました。Controller
をすべて修正するのを避けるために、私はInterceptor
を使ってこの仕事を減らす考えを思いついた。Controllers
のデータがModelMap
の場合は正常に機能しますが、そのデータの場合はRedirectAttributes
となります。はどのように私はHandlerInterceptor.postHandleでRedirectAttributesを取得することができます()メソッド問題:
コントローラの一部が戻るredirect
と属性を渡すためにRedirectAttributes
を使用しています。postHandler()
には、request,response,handler
とmodelAndView
という4つのパラメータしかありませんから、RedirectAttributes
という属性はほとんど得られません。
コントローラーコード:
@RequestMapping(value="save")
public String save(CarInfoEntity entity, HttpServletRequest request, HttpServletResponse response, RedirectAttributes redirectAttributes, Model model){
redirectAttributes.addFlashAttribute("message", "success!");
return "redirect:/demo/carInfo/list";
}
インターセプタコード:
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
if(modelAndView != null) {
Map<String, Object> map = modelAndView.getModel();
String json = JSON.toJSONString(map, SerializerFeature.DisableCircularReferenceDetect);
logger.debug(json);
if (null != json) {
try {
response.setHeader("Content-type", "application/json;charset=UTF-8");
response.setCharacterEncoding("UTF-8");
PrintWriter pw = response.getWriter();
pw.write(json);
pw.flush();
pw.close();
} catch (IOException e) {
}
}
modelAndView.clear();
}
}
質問1:私はインターセプタでRedirectAttributes
を得ることができますか?
質問2:どうすればできますか?