3

I have a requirement like when i click on "submit" button,i should a small window containing buttons like "open","save" and "cancel".I will show an image for better understanding.enter image description here

As you can see the above a popup window came and its asking like "open" or "save".I have tried by using different codes but not getting exactly what i want.Here is my code below.

searchResult3.jsp

<script type="text/javascript">
 function generateReport() {
  var e = document.getElementById("idOfYourSelectYouNeedToAddedIt");
  var strPage = e.options[e.selectedIndex].value;
  window.open(strPage);
 return false; //This make you stay on this page;
  //return true; //Set the action tag in the form to the page you like to go to!
 }
</script>

<body>
 <form name="myForm" onsubmit="return generateReport()">
                <select id = "idOfYourSelectYouNeedToAddedIt">
<option value=''> Make a selection </option>
<option value='sample2PDF.jsp'> PDF</option>
<option value='sample2XLS.jsp'> XLS </option>
<option value='sample2DOC.jsp'> DOC </option>
<option value='sample2XLSX.jsp'> XLSX </option>
</select>
<br/>

<input type="submit" value="Submit">
</form>
</body>

sampleDOC.jsp

<%@ page import="java.io.*"%> 
<%@ page import="java.sql.Connection"%> 
<%@ page import="java.sql.DriverManager"%>
<%@ page import="java.util.HashMap"%>
<%@ page import="java.util.Map"%>
<%@ page import="net.sf.jasperreports.engine.*"%>
<%@ page import="java.io.FileNotFoundException" %>
<%@ page import="java.io.InputStream" %>
<%@ page import="java.sql.SQLException" %>
<%@ page import="java.io.ByteArrayOutputStream" %>
<%@ page import="java.io.OutputStream" %>
<%@ page import="net.sf.jasperreports.engine.util.*" %> 
<%@ page import="net.sf.jasperreports.engine.export.*" %>
<%@ page import="net.sf.jasperreports.engine.design.JRDesignQuery"%>
<%@ page import="net.sf.jasperreports.engine.xml.JRXmlLoader"%>
<%@ page import="net.sf.jasperreports.engine.design.JasperDesign"%>
<%@ page import="net.sf.jasperreports.view.JasperViewer"%>
<%@ page import="net.sf.jasperreports.engine.JRException"%>
<%@ page import="net.sf.jasperreports.engine.JasperCompileManager"%>
<%@ page import="net.sf.jasperreports.engine.JasperExportManager"%>
<%@ page import="net.sf.jasperreports.engine.JasperFillManager"%>
<%@ page import="net.sf.jasperreports.engine.JasperPrint"%>
<%@ page import="net.sf.jasperreports.engine.JasperReport"%>
<%@ page import="net.sf.jasperreports.engine.export.ooxml.JRDocxExporter"%>
<%@ page import="javax.servlet.http.HttpServletResponse"%>;  
<%@ page trimDirectiveWhitespaces="true"%>
<html>

<body>

<%
String sql=null;
Connection conn = null;
Object o2 = session.getAttribute("email");
String email = o2.toString();
String search=(String)session.getAttribute("search");//search
String search_tf=(String)session.getAttribute("search_tf");//companyname,contactperson,phone
if((search!=null && search.trim().length()>0) && (search_tf!=null && search_tf.trim().length()>0))
{
    if(search.equals("Phone"))
    {
        sql="select * from lead where Phone like '" + search_tf.replaceAll("\\'","''") + "%' AND Email = '" + email + "'";
    }
    else if(search.equals("Contact Person"))
    {
        sql="select * from lead where Contact_Person like '" + search_tf.replaceAll("\\'","''") + "%' AND Email = '" + email + "'";
    }
    else
    {
        sql="select * from lead where Company_Name like '" + search_tf.replaceAll("\\'","''") + "%' AND Email = '" + email + "'";
    }
}
else
{
    sql="select * from lead where Email = '" + email + "'";
}
try 
{
    Class.forName("com.mysql.jdbc.Driver");
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/marketing_database","root","root");
    String jrxmlFile ="D:/dev/tools/jasper files/report10.jrxml";
    InputStream input = new FileInputStream(new File(jrxmlFile));
    JasperDesign jasperDesign = JRXmlLoader.load(input);

    System.out.println("Compiling Report Designs");
    JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);

    System.out.println("Creating JasperPrint Object");
    HashMap<String,Object> map = new HashMap<String,Object>();
    map.put("sql",sql);
    JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport,map,conn);
    byte bytes[] = new byte[10000]; 
    JRDocxExporter exporter = new JRDocxExporter();
    ByteArrayOutputStream DOCStream = new ByteArrayOutputStream(); 
    exporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint); 
    exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, DOCStream); 
    exporter.exportReport(); 

    //System.out.println("Size of byte array:"+DOCStream.size()); 
    //bytes = DOCStream.toByteArray(); 
    String fileName = "SalesReport.doc";
    response.addHeader("Content-Disposition", "inline; filename=\"" + fileName + "\"");
   //response.setHeader("Content-Disposition", "inline; filename="
//   + fileName);

    response.setContentType("application/msword"); 
    response.setContentLength(DOCStream.size()); 
    //DOCStream.close();  

    OutputStream outputStream = response.getOutputStream();  
    DOCStream.writeTo(outputStream);  
    outputStream.flush(); 
    //outputStream.close(); 

}
catch(Exception e) 
{e.printStackTrace();} 

        %>
</body>
</html>
Alex K
  • 22,315
  • 19
  • 108
  • 236
FIFA oneterahertz
  • 718
  • 2
  • 16
  • 43
  • 1
    It's not possible. It's completely up the to the browser how to handle downloads. The user can change it in the browser's configuration. One thing you can do is replace `inline` with `attachment` in the `Content-Disposition` but that only "forces" the browser to save the file instead of launching a program to open it. – RoToRa Nov 20 '15 at 13:53

1 Answers1

1

Like @RoToRa said, the Open/Save dialog is part of Internet Explorer, it is not something you can trigger on arbitrary browsers.

However that dialog appears when IE believes the user is making a request for a file rather than a web page (or other resource, like an image, that the browser can display). Browsers look at the Content-Disposition header as a suggestion for when to display this dialog.

Roughly speaking, you should serve a

Content-Disposition: attachment; filename="SUGGESTED_FILE_NAME"

header with your request in order to trigger the dialog. See php - How to force download of a file? for more.

Community
  • 1
  • 1
dimo414
  • 47,227
  • 18
  • 148
  • 244