2017-08-18 16 views
1
  • 背景:WebプロジェクトがSpringMvcフレームワークは、前後 別離の再構築するために必要とする使用しています
    。フロントエンドはReactを使用する予定で、バックエンドのControllersのどのものがjspビューを返すために使用されたかは、jsonObjectを返す必要があります。 jspからModelMapに渡されたデータは、jsonに転送され、Responseに書き戻される必要がありました。 Controllerをすべて修正するのを避けるために、私はInterceptorを使ってこの仕事を減らす考えを思いついた。 ControllersのデータがModelMapの場合は正常に機能しますが、そのデータの場合はRedirectAttributesとなります。はどのように私はHandlerInterceptor.postHandleでRedirectAttributesを取得することができます()メソッド

  • 問題:
    コントローラの一部が戻るredirectと属性を渡すためにRedirectAttributesを使用しています。 postHandler()には、request,response,handlermodelAndViewという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:どうすればできますか?

答えて

0

私はAOPを使用しようとしましたが、問題は完全に解決しました。私はがIntercepterより強力であることを発見しました。 cut pointsをより柔軟に定義し、getArgs()メソッドProceedingJoinPointですべての引数を取得できます。

関連する問題