[挿入]VUE+Spring Download


ケース

  • 既存システムからfrontのみvue(SPA)に変更中
  • excelダウンロード機能、サーバ側コードは概ね以下の通り.
  • @RequestMapping("/export.ajax")
    public ModelAndView doExport(HttpServletRequest req,
    		@ModelAttribute ADto dto) throws Exception {
    	ModelAndView model = new ModelAndView("excelDownloadBean");
    	//...
    	return model;
    }
  • 画面で要求されたコードは概ね以下の通りであるが、常に405エラーが発生する.
  • axios.post('~/export.ajax', {responseType:'blob'})

    405 method not allowed

  • リクエストしたコードが間違っていると思い、迷っていた…
  • サーバ側をデバッグした.間違いはありませんが、デバッグログを詳しく撮りました.
  • そうですね.DispatcherServicelet ExcelDownloadBeanが見つかりません…!
  • SPAへの変更時にコンテキストから以下のBenNameViewResolverが削除されたため
  • <beans:bean class="org.springframework.web.servlet.view.BeanNameViewResolver">
    	<beans:property name="order" value="0" />
    </beans:bean>

    BeanNameViewResolver

  • BeanNameViewResolverはview名と同名のbeanオブジェクトをviewオブジェクトとして使用する.
  • でもスパにこいつを入れたら…困難リフレッシュ時/特定ページURLを入力し、接続時に=>errorページ=>indexを返します.htmlを使いますか...?釘
  • ModelAndView(Bean)

  • なので直接beanを探して入れました.(以前はBenNameをパラメータで渡していたとしたら…今は自動接続でBenを追加/問題ありますか?)
  • ModelAndViewを使わず、出力ストリームに入れる内部ロジックを取り除くだけで良い…これはフロントの主な仕事ではありません.先にスキップします.今後改善が必要かも