0

何かが可能かどうかについて質問があります。Excel ドキュメントを返す外部 Web サイトにリンクするボタンを持つ spring mvc webapp があります。返された Excel ドキュメントの名前はゴミです。ユーザーが保存するように求められる前に、ドキュメントの名前を変更したいと思います。

これは、Spring MVC を使用して可能ですか。私は本当に古いバージョンを使用しています。Java 1.4.2 と互換性のあるバージョン。

これまでのところ、org.springframework.web.servlet.mvc.AbstractController を拡張し、handleRequestInternal をオーバーライドしてから、次のようなことを行うことを考えています....

protected ModelAndView handleRequestInternal(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

RedirectUrlBuilder urlBuilder = new RedirectUrlBuilder();
urlBuilder.setServerName(batchServerName);
urlBuilder.setPort(Integer.parseInt(batchServerPort));
urlBuilder.setContextPath(batchReportRoot);
urlBuilder.setServletPath(reportNameServletPath);
urlBuilder.setPathInfo(reportNamePathInfo);
urlBuilder.setScheme(HTTP);

String transitionUrl = urlBuilder.getUrl();
ModelAndView modelAndView = new ModelAndView(new RedirectView(transitionUrl));

return modelAndView;

しかし、ドキュメントが入ってきたときにドキュメントの名前を変更するにはどうすればよいですか...

ありがとう

4

1 に答える 1

1

おそらく、別のアプローチとして、リクエストを外部 Web サイトにプロキシする Controller 実装を使用することも考えられます。外部 Web サイトと直接やり取りするのではなく、ユーザーは Controller とやり取りします。これにより、ユーザーに提供する前にファイルの名前を変更できます。また、将来状況が変わった場合でも、Controller の実装を変更するだけでよいことも意味します。

したがって、提案されたワークフローは次のようになります。

  1. ユーザーがコントローラーへのリンクをクリックする /downloadExcelReport
  2. リクエストは ExcelReportController によって処理されます
  3. ExcelReportController が外部 Web サイトに HTTP 要求を送信し、Excel ドキュメントをフェッチします。
  4. Excel レポートをユーザーに返す前に、ExcelReportController は正しい HTTP ヘッダーを設定して、必要に応じてファイルに名前が付けられるようにします。

このようにして、Spring の内部をオーバーライドする必要はなく、通常の Controller 実装のみを提供します。

于 2013-08-22T11:37:34.063 に答える