+2 امتیاز
قبل در برنامه نویسی توسط (17 امتیاز)
ویرایش شده قبل توسط

سلام

در wise 4.4  گزارشات بدون اضافه کردن خط ذیل باز نمی شود

getThreadLocalResponse().setHeader("Content-Disposition", "attachment; filename=\"report.pdf\"");

با گذاشتن این خط هم باید download کنیم ، که ما نمی خواهیم به این صورت باشد.


private void exportPdf(JRDataSource jrDataSource)
{
  if(jrDataSource == null)
  {
   return;
  }
  getThreadLocalResponse().setContentType("application/pdf");
  getThreadLocalResponse().setHeader("Expires","0");
  getThreadLocalResponse().setHeader("Pragma","no-cache");
  getThreadLocalResponse().setHeader("Cache-Control","private");
  getThreadLocalResponse().setHeader("Content-Disposition", "attachment; filename=\"report.pdf\"");
 
  String basePath = getServletContext().getRealPath("/");
  try
  {
   String username=SecurityContextUtils.getCurrentUser().getFirstName() + " " + SecurityContextUtils.getCurrentUser().getLastName();
   Map<String, Object> params = new HashMap<String, Object>();
   params.put("pusername", username);
   JasperPrint jasperPrint = JasperFillManager.fillReport(basePath + AppConstants.JASPER_REPORT_PATH + jasperFileName,params,jrDataSource);
   JasperExportManager.exportReportToPdfStream(jasperPrint,getThreadLocalResponse().getOutputStream());
   getThreadLocalResponse().getOutputStream().flush();
   getThreadLocalResponse().flushBuffer();
  }
  catch(Exception e)
  {
   e.printStackTrace();
  }
}
قبل توسط (1.2هزار امتیاز)
ویرایش شده قبل توسط
+1
در فرم html ای که از این servlet استفاده می کند مقدار target را چه داده اید؟
آیا مقدار target چیزی غیر از  _blank است؟
قبل توسط (17 امتیاز)
بله گذاشته ام

متن

pagedownloadPanel = new DownloadPanel<HashMap<Long,Long>>(
                "_BLANK",
                (BookletPrintPageServletAsync) GWT
                        .create(BookletPrintRequestServlet.BookletPrintPageServlet.class));

        pagedownloadPanel
                .setAction(BookletPrintRequestServlet.BookletPrintPageServlet.URL);

2 پاسخ

+1 امتیاز
قبل توسط (10 امتیاز)

سلام 

بجای 

getThreadLocalResponse().setHeader("Content-Disposition", "attachment; filename=\"report.pdf\"");

قرار دهید :

getThreadLocalResponse().setHeader("Content-Disposition", "inline; filename=\"report.pdf\"");

در حقیقت بجای attachment شما از inline استفاده کنید.

0 امتیاز
قبل توسط (1.4هزار امتیاز)
ویرایش شده قبل توسط

مشکل شما از سمت سرور نیست (البته باید content-disposition رو از attachment به inline تغییر دهید)، از سمت ui هست. از constructor اشتباه DownloadPanel استفاده کرده‌اید. یعنی به جای target، شما url رو blank_ گداشته‌اید.

از این constructor باید استفاده کنید:

public DownloadPanel(String target, String url,
   DownloadServletAsync<T> factory) {

یا اینکه از متد DownloadPanel.setTarget استفاده کنید.

با کد زیر، مشکل شما رفع خواهد شد:

pagedownloadPanel = new DownloadPanel<HashMap<Long,Long>>("_blank",BookletPrintRequestServlet.BookletPrintPageServlet.URL,(BookletPrintPageServletAsync) GWT
                        .create(BookletPrintRequestServlet.BookletPrintPageServlet.class));

یا کوتاه‌تر:

pagedownloadPanel = new DownloadPanel<HashMap<Long,Long>>("_blank",BookletPrintRequestServlet.BookletPrintPageServlet.URL,BookletPrintPageServletAsync.INSTANCE);

 

سوالات مشابه

–1 امتیاز
1 پاسخ 593 بازدید
+5 امتیاز
2 پاسخ 1.9هزار بازدید
+1 امتیاز
1 پاسخ 388 بازدید
0 امتیاز
0 پاسخ 272 بازدید
سوال شده 4 سال قبل در برنامه نویسی توسط farhad99 (0 امتیاز)
0 امتیاز
1 پاسخ 452 بازدید
0 امتیاز
1 پاسخ 369 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط nirvana (89 امتیاز)
0 امتیاز
1 پاسخ 467 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط nirvana (89 امتیاز)
0 امتیاز
2 پاسخ 658 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط gatity (139 امتیاز)
+1 امتیاز
0 پاسخ 350 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط gatity (139 امتیاز)
+1 امتیاز
1 پاسخ 327 بازدید
سوال شده 5 سال قبل در برنامه نویسی توسط nirvana (89 امتیاز)
...