私はSpring MVCを初心者にしていますが、機能にはかなり感銘を受けたです。新しいウィンドウに表示される(Spring MVCコントローラメソッドから提供される)PDFコンテンツを取得する方法
私は3.1.0-RELEASEを使用しています。私はフォームに応じてPDFを表示する必要があります:フォームの提出。ここで
は、私は、コントローラに書いた(小)コードです:
@RequestMapping(value = "new_product", method = RequestMethod.POST, params = "print")
@ResponseBody
public void saveAndShowPDF(ModelMap map, ShippingRequestInfo requestInfo, HttpServletRequest request, HttpServletResponse httpServletResponse) throws IOException {
saveProductChanges(map, requestInfo, request, httpServletResponse);
httpServletResponse.setContentType("application/pdf");
byte[] pdfImage = productService.getPDFImage(requestInfo.getRequestId());
httpServletResponse.getOutputStream().write(pdfImage);
}
このコードは、元のウィンドウに[] PDFのバイトを送信します。
PDFを別のウィンドウで表示するにはどうすれば元のブラウザウィンドウに他のコンテンツを表示させることができますか?ベストは、クライアントのPDFビュープログラム(Adobe Reader、FoxItなど)を使用してPDFを表示することですが、別のブラウザウィンドウにPDFが表示されても問題ありません。私はブラウザは、ユーザーが(メインブラウザのページを失うと)のAdobeを開くことができます保存/オープンボックスが表示されますようにContent-処分を設定することを決め
EDIT
httpServletResponse.setHeader("Content-Disposition","attachment;filename=cool.pdf");
みんなありがとう!
target = "_ blank"はPDFを別のウィンドウに表示します(うまくいけば)。コントローラメソッドでStringを返すようにすれば、元のウィンドウに新しいページ(新しいウィンドウにPDFと共に)をレンダリングできますか? –
ダーン...フォームに複数のtype = "submit"ボタンがあり、このボタンだけが別のウィンドウでレスポンス(PDF)を必要とするため、target = "__ blank"を使用できません。 私は、ユーザーがAdobeを開くことができるセーブ/オープンボックスをもたらすようにContent-Dispositionを設定することを決めました。(メインブラウザページを失って) httpServletResponse.setHeader( "Content-Disposition"、 "attachment; filename = product.pdf "); –