Wie öffnen Sie eine neue Registerkarte mit der servlet-Antwort?
Möchte ich eine neue Registerkarte öffnen, wenn ich index.jsp
- Datei in eine web-Anwendung . Und ich habe Show.java
(ein servlet) zur Ausführung . Die aktuelle situation ist, wenn ich auf die Print
Schaltfläche in index.jsp
, die content-Seite, die ich öffnen möchte, in einem neuen tab angezeigt wird auf der aktuellen Registerkarte . Ich möchte es mit servlet-Antwort und nicht mit javascript
oder jquery
.
Dies ist die ich geschrieben habe index.jsp
Datei ,
<form action="Show">
<input type="submit" value="Print"/>
</form>
<%@page import="net.sf.jasperreports.engine.export.JRPdfExporter" %>
<%
JRPdfExporter export = (JRPdfExporter)request.getAttribute("exportIndentObject");
if (export != null){
JRPdfExporter export1 = (JRPdfExporter) session.getAttribute("exportIndentObject");
export1.exportReport();
}%>
Dies ist Show.java
welche ich benutzen, um Inhalte,
String param ="Terance";
Map<String, Object> map = new HashMap<String, Object>();
map.put("param", param);
JRPdfExporter jRPdfExporter = new JRPdfExporter(); jRPdfExporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, this.print();");
String jsaperFile="C:\\Users\\user\\Desktop\\Terance\\Jasper\\JasperReport\\src\\java\\jasper\\Report.jrxml";
System.out.println(jsaperFile);
try
{
String report=JasperCompileManager.compileReportToFile(jsaperFile);
File file=new File(report);
if(!file.exists()){
throw new JRException("Cannot find the given file .");
}
JasperPrint jasperPrint=JasperFillManager.fillReport(report, map);
byte[] exportReportToPdf = JasperExportManager.exportReportToPdf(jasperPrint);
ServletOutputStream sout = response.getOutputStream();
response.setContentType("application/pdf;");
jRPdfExporter.setParameter(JRExporterParameter.JASPER_PRINT, jasperPrint);
jRPdfExporter.setParameter(JRExporterParameter.OUTPUT_WRITER, sout);
jRPdfExporter.setParameter(JRPdfExporterParameter.PDF_JAVASCRIPT, "this.print();");
request.setAttribute("exportIndentObject", jRPdfExporter);
response.setContentType("application/pdf");
response.setHeader("Content-disposition","inline; filename=\"myReport.pdf\"");
sout.write(exportReportToPdf);
sout.flush();
sout.close();
} catch (JRException ex)
{
ex.printStackTrace();
}
Wenn ich response.redirect();
konnte ich nicht bekommen, auch die index.jsp
- Datei im browser .
- Ihre Antwort wird gehen, wo die Anfrage kommt von
- Lila:- haben keine Möglichkeit dieses Problem zu beheben ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Servlet funktioniert auf der server-Seite, und generieren http-Antwort an Ihren browser, aber es kann keine Reaktion mit irgendeinem Befehl zum öffnen der neuen Registerkarte. Dies hängt davon ab, Benutzer-browser-Einstellungen (zum öffnen neuer Fenster oder neuer tab), so Servlet nicht.
Nur für alle oder keine:
Also vielleicht platzieren Sie die Schaltfläche drucken, die außerhalb der ursprünglichen form und haben Ihre eigene form-tags.