मैं त्रुटि संदेश getOutputStream() has already been called for this response
और कई लोगों ने कहा कि यह स्थान या न्यू लाइन <%
या %>
के बाद की वजह से है गूगल के लिए बुलाया गया है, लेकिन मेरे कोड में, वहाँ कोई एक अंतरिक्ष या एक नई पंक्ति है । मैं linux पर tomcat6 का उपयोग कर रहा हूँ।getOutputStream() पहले से ही इस प्रतिक्रिया
<%@
page import="java.servlet.*,
javax.servlet.http.*,
java.io.*,
java.util.*,
com.lowagie.text.pdf.*,
com.lowagie.text.*"
%><%
response.setContentType("application/pdf");
Document document = new Document();
try{
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
PdfWriter.getInstance(document, buffer);
document.open();
PdfPTable table = new PdfPTable(2);
table.addCell("1");
table.addCell("2");
table.addCell("3");
table.addCell("4");
table.addCell("5");
table.addCell("6");
document.add(table);
document.close();
DataOutput dataOutput = new DataOutputStream(response.getOutputStream());
byte[] bytes = buffer.toByteArray();
response.setContentLength(bytes.length);
for(int i = 0; i < bytes.length; i++)
{
dataOutput.writeByte(bytes[i]);
}
}catch(DocumentException e){
e.printStackTrace();
}
%>
~
org.apache.jasper.JasperException: java.lang.IllegalStateException: getOutputStream() has already been called for this response
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:522)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:410)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
मूल कारण
java.lang.IllegalStateException: getOutputStream() has already been called for this response
org.apache.catalina.connector.Response.getWriter(Response.java:610)
org.apache.catalina.connector.ResponseFacade.getWriter(ResponseFacade.java:198)
org.apache.jasper.runtime.JspWriterImpl.initOut(JspWriterImpl.java:125)
org.apache.jasper.runtime.JspWriterImpl.flushBuffer(JspWriterImpl.java:118)
org.apache.jasper.runtime.PageContextImpl.release(PageContextImpl.java:188)
org.apache.jasper.runtime.JspFactoryImpl.internalReleasePageContext(JspFactoryImpl.java:118)
org.apache.jasper.runtime.JspFactoryImpl.releasePageContext(JspFactoryImpl.java:77)
org.apache.jsp.Account.Domain.testPDF_jsp._jspService(testPDF_jsp.java:94)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:374)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
क्या आपने सत्यापित किया है कि यह काम करता है? मुझे संदेह है कि इससे कोई फर्क पड़ेगा, पेज सामग्री के बावजूद कंटेनर अभी भी 'getWriter' को कॉल करने जा रहा है। – skaffman
नहीं, ऐसा नहीं है कि '<% %>' के बाहर बिल्कुल कोई सफेद जगह नहीं है। हालांकि यह कार्यान्वयन-विशिष्ट व्यवहार हो सकता है जिसे मैं पूरी तरह से भरोसा नहीं करता। जहां तक मुझे पता है कि यह टॉमकैट में ठीक काम करेगा। लेकिन फिर, जावा कोड जावा वर्गों में है, जेएसपी फाइलों में नहीं। अवधि। – BalusC
मैं यह उल्लेख करना भूल गया कि trimDirectiveWhitespaces निर्देश जेएसपी 2.1 या बेहतर – RealHowTo