1

私はstruts2Webアプリケーションを使用しています。ユーザーがリンクをクリックしたときに、ユーザーのブラウザーにファイル(Excel、PDFファイル、またはHTMLの場合があります)を表示したいという状況に直面しています。

また、応答はブラウザの[開く/保存]ダイアログボックスの形式である必要があります。

そのために私がこれまでにしたことは

1)struts.xmlファイルにアクションマッピングを作成します。

2)アクションクラスメソッドの内容は次のようになります

ServletOutputStream outputStream = null;
outputStream = response.getOutputStream();
                byte[] output = (byte[])content;
                response.setContentType(getContentType(format));
                response.setContentLength(output.length);
                outputStream.write(output, 0, output.length);
                outputStream.flush();
                outputStream.close();

このコード部分は、コンテンツタイプ、コンテンツの長さを設定し、最後にコンテンツを書き込みます。

私の質問は、このコンテンツを表示するためにjspページに何を書く必要があるかです。

誰でも助けてください。

4

4 に答える 4

2

アクションの結果として JSP ページを表示するかブラウザにファイルをダウンロードさせます。両方を行うことはできません。いわば、それらは同じチャネルで送信されます。

ダウンロード ファイルの実装方法の一般的な例については、 を参照してくださいStreamResult

ただし、この場合、ヘッダーを設定して自分で出力を作成しているため、アクションからActionSupport.NONEまたは戻りたいだけかもしれません。 http://struts.apache.org/2.x/docs/result-configuration.htmlを参照してください。null

電話すれば

response.setHeader("Content-Disposition","attachment; filename=\"rfc2616-quoted-string\"");`

ユーザーにはダウンロード ダイアログが表示されますが、

response.setHeader("Content-Disposition","inline");`

可能な場合、コンテンツはブラウザに表示されます。

于 2012-10-15T13:50:13.683 に答える
1

StreamResultを使用することをお勧めします

ここに例があります

さらに、struts.xml ファイルの代わりに、アクション クラスで StreamResult パラメータを設定できます。

于 2012-10-15T14:43:46.663 に答える
0

context-disposition何もありません。Responseヘッダーを「添付ファイル」として設定する必要もあります。

于 2012-10-15T13:33:30.347 に答える
0

これをサーブレットコードに追加します

 response.setHeader("Content-Disposition","attachment;filename=myfilename.pdf");
于 2012-10-15T13:35:55.963 に答える