2017-12-10 9 views
0

WebアプリケーションでSpring MVCとthymeleafを使用しています。Spring MVC、リダイレクト時にパラメータをタイムリーフビューに渡す方法

シナリオの1つに、その機能の最後にリダイレクトするコントローラがあります。私はフロントエンドにパラメータ(実際には成功/失敗の警告メッセージ)を渡す必要があります。どのようにこの動作を実装できますか。

リダイレクトがある場合、model.addAttribute()を実装できないことがわかりました。

以下はコントローラコードです。

@RequestMapping(value = "delete", method = RequestMethod.GET) 
    public ModelAndView deleteForm544(@RequestParam("id") final Long inForm544Id) { 

     logger.info("Hit the /Form544/delete "); 
     logger.info("Change Status Deleted of Form 544 ID : " + inForm544Id); 

     JSONObject alertObj = new JSONObject(); 

     try { 
      form544Service.setStatusAsDeleted(inForm544Id); 

      alertObj.put("type", "success"); 
      alertObj.put("msg", "Successfully deleted Form 544 with ID Number " + inForm544Id); 

     } catch (Exception e) { 
      logger.error("Error occured " + e); 

      alertObj.put("type", "fail"); 
      alertObj.put("msg", "Form 544 deletion failed. Due to " + e.getMessage()); 
     } 

     return new ModelAndView("redirect: filter_view"); 
    } 

以下は、(タイメリーフ)コードです。 [注:私はjavascriptの変数に値を取得する必要があります]最後に、いくつかの記事を参照

<script th:inline="javascript"> 

    /*<![CDATA[*/ 
    var alertObj = ([[${alert}]]); 
    /*]]>*/ 

</script> 

答えて

0

、私は

RedirectViewとredirectAttributes.setFlashAttributes()

を使用して解決策を見つけることができます

コントローラ(Spring MVC)の機能は次のとおりです。

@RequestMapping(value = "delete", method = RequestMethod.GET) 
    public RedirectView deleteForm544(@RequestParam("id") final Long inForm544Id, 
      RedirectAttributes redirectAttributes) { 

     logger.info("Hit the /Form544/delete "); 
     logger.info("Change Status Deleted of Form 544 ID : " + inForm544Id); 

     JSONObject alertObj = new JSONObject(); 

     try { 
      form544Service.setStatusAsDeleted(inForm544Id); 

      alertObj.put("type", "success"); 
      alertObj.put("msg", "Successfully deleted Form 544 with ID Number " + inForm544Id); 

     } catch (Exception e) { 
      logger.error("Error occured " + e); 

      alertObj.put("type", "fail"); 
      alertObj.put("msg", "Form 544 deletion failed. Due to " + e.getMessage()); 
     } 

     RedirectView redirectView = new RedirectView(); 
     redirectView.setContextRelative(true); 
     redirectView.setUrl("filter_view"); 
     redirectAttributes.addFlashAttribute("alert", alertObj); 

     return redirectView; 
    } 

次はビュー(thymeleaf)コードです。 [注:Javascript変数へのアラート応答]

<script th:inline="javascript"> 

    /*<![CDATA[*/ 
    var alertObj = ([[${alert}]]); 
    /*]]>*/ 

</script> 
関連する問題