2016-11-17 19 views
0

ダウンロードをクリックすると、SANロケーションから新しい開かれたタブウィンドウにコンテンツが書き込まれ、完了するとPDFがローカルシステムにダウンロードされます。私はファイルが30秒でatmostを書き込み/ダウンロードされない場合、新しいタブウィンドウを閉じたいと思います。親ウィンドウのJSPにテキストメッセージを表示します。以下のように私のサーブレットコード:ダウンロードが失敗した場合、30秒後にBufferedOutputStream出力を閉じます。

try 
    { 
     GetPDAO getPDAO= new GetPDAO(); 

      for(int i=0;i<5;i++) 
      { 
       content=getPDAO.getPFromE(strPN); 
       DateFormat df = new SimpleDateFormat("dd/MM/yy HH:mm:ss"); 
       Date dateobj = new Date(); 
       if(content==null) 
       { 
       Thread.sleep(5000); 
       } 
      else { 

       content=getPDAO.getPFromE(strPN); 
       break; 
      } 
      } 
     response.setContentType("application/pdf"); 
     String strFileName=strPN+".pdf"; 
     response.setHeader("Content-Disposition","attachment; filename=\"" + strFileName + "\""); 
     response.setHeader("Cache-Control","no-cache"); 
     response.setHeader("Cache-Control","no-store"); 
     response.setHeader("Pragma","no-cache"); 
     response.setDateHeader("Expires", 0); 
     output =new BufferedOutputStream(response.getOutputStream()); 
     output.write(content); 
     output.flush();   
     } 
    finally 
    { 
     output.close(); 
     } 

し、以下のように私のJSPコード:

function onSubmit() 
{  
var url="<%=strCCPURL%>"+"/getpfromeservlet?PN="+document.getElementById("pn").value; 
     document.getElementById('alrt').innerHTML='<b>Please wait</b>'; 
      setTimeout(function() {document.getElementById('alrt').innerHTML='';},8000); 
      window.open(url,"_blank"); 
      document.getElementById('viewPD').href=url; 
      document.getElementById('viewPD').target='_blank';    
} 
+0

質問は? NB 30秒のタイムアウトが必要な場合は、なぜ8秒のタイムアウトを設定していますか? – EJP

+1

いくつかのrはここでdownvoteを乱用します。もしあなたが見れば、8秒は、別の "待ってください"アラートのために表示されている時間のために表示されます(setTimeOut).Qはどのように新しいオープンタブは30秒後に自動クローズするでしょう –

+0

@EJP誰か助けてください。私は完全に立ち往生している。私のQはcontentTypeが(application/pdf)のサーブレットにあります.Windows.closeを使用して新しいウィンドウを閉じ、JSPにフォーカスを戻すことができるように何かを書くことはできますか?私がしたいのは、ダウンロードが失敗した30秒後にメッセージを表示することだけです。 –

答えて

2

あなたのJSPのレプリカにサーブレットからのsendRedirectを使用することができ、その後、自動JSPを閉じます。 sendRedirectはサーブレットを閉じ、次にレプリカJSPはwindow.closeメソッドによって閉じられます。フォーカスはメインのJSPに戻ります。

関連する問題