新しいポップアップウィンドウにpdfストリームを表示したいのですが、ストリームが空の場合、現在のページ(Edition.jsp)にエラーメッセージを書きたいです。
Edition.jsp ページ:
<s:form id="pdf" action="ExportPdf" theme="simple" target="pageEdition" >
...
<sj:menu name="typeEdition" cssClass="edition" list="listeEditions" />
</s:form>
struts.xml で:
<action name="ExportPdf" class="ExportPdfAction">
<result name="success" type="stream">
<param name="inputName">inputStreamPdf</param>
<param name="contentType">application/pdf</param>
<param name="contentDisposition">filename="myFile.pdf"</param>
<param name="bufferSize">2048</param>
</result>
<result name="error">/WEB-INF/web/Edition.jsp</result>
</action>
javascript、メニュー項目の編集をクリックすると
$('.edition').bind('click', function(even, data) {
window.open('', 'pageEdition', 'location=no, menubar=no, height=600, width=900' );
$('#pdf').submit();
});
エラーを返すと、目的のページに移動したくありません。
はい、Ajax JQuery で試してみましたが、問題は display pdf です!
// click on the menu item edition
$('.edition').bind('click', function(event, data) {
$('#pdf').submit();
});
$('#pdf').submit(function(event) {
// stop form from submitting normally
event.preventDefault();
// post with parameters
var posting = $.post( $( this ).attr( 'action' ), $('#pdf').serialize());
// wait results
posting.done(function( data, event ) {
if (data.substring(0,4) != '%PDF') {
alert ("error");
} else {
// the format pdf is recognize, but not display (the stream is in the url, but not in the content)
window.open('data:application/pdf,'+ data, 'pageEdition', 'menubar=no, height=600, width=900' );
}
});
このソリューションを使用すると、ストリーム レスポンス (データ パラメータ) が正しく表示されません。ストリームは URL にありますが、コンテンツにはありません。私は試してみます:
window.document.write(data);
しかし、それはhtmlコンテンツです。
javascriptでpdfストリームを表示するにはどうすればよいですか?
ありがとう