首页 > 解决方案 > java.lang.IllegalStateException: getOutputStream() 已在 jsp 中为此响应调用

问题描述

“我收到‘java.lang.IllegalStateException: getOutputStream() 已经为此响应调用’异常。”

我想打印属于 classxxx 的所有用户的证书。假设 classxxx 有 4 个用户,那么所有 4 个用户的证书都应该一一打印。

但我的代码只打印第一个用户的证书。

这是我的代码。

String type = "certification";
List<LBUser> classRoster = null;
classRoster = LBUser.getClassRoster(classId,true,false,false);
//Here i get list of users

if(classRoster != null && classRoster.size() > 0) {
for(LBUser user : classRoster) {

if ("certification".equals(type)){%>
<%@ include file="certificate_certification.jsp" %>
<%} %>
<%

ByteArrayOutputStream buffer = new ByteArrayOutputStream();

try { 
Document document = new Document(PageSize.LETTER.rotate());
PdfWriter writer = PdfWriter.getInstance(document, buffer);
writer.setPdfVersion(PdfWriter.VERSION_1_6); 

document.open();
PdfContentByte over = writer.getDirectContent();
PdfContentByte under = writer.getDirectContentUnder();

//Some image related and Pdf related code

document.close(); 

DataOutput dataOutput = new DataOutputStream(response.getOutputStream());
//response.getOutputStream().... Here am getting same object
byte[] bytes = buffer.toByteArray();
response.setContentLength(bytes.length);
for(int i = 0; i < bytes.length; i++)
{
    dataOutput.writeByte(bytes[i]);
}

}catch(Exception e){
    e.printStackTrace();
}finally{
    try{
        if(buffer != null){
            buffer.close();
            buffer = null;
        }
    }catch(IOException e){
        buffer = null;
    }       
}
} // classRoster forloop closed

“这个错误已经出现在谷歌上,我遵循了所有步骤,但没有一个奏效。”

谢谢。

标签: javajsppdf

解决方案


推荐阅读