1

我正面临响应已经提交的问题,因为在创建 PDF 时,如果发生某种错误,则会引发异常,异常处理程序会尝试将其转发到某个错误区域。请帮助我如何丢弃当前的文件处理并获取响应?

提前致谢

编辑

PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream);
pdfWriter.setPageEvent(new PageEvents()); 
createPDF(document, fileName, headerNames, headerValues, imageNameList, pageType);     
document.close(); 
outputStream.close();

如果发生错误createPDF(),例如找不到图像,则它会捕获DocumentException异常并将自定义异常抛出给动作类,并且动作类会尝试像这样转发响应

catch (CustomException e) {
    String csvText = Message.PDF_NOT_GENERATED; 
    forward = mapping.findForward("displayError");
    return (forward); 
}

但是由于pdfwriter,由于输出流被writer占用,服务器在控制台上抛出响应已经提交的错误

4

1 回答 1

0

在关闭输出流的地方创建一个 finally 块,例如:

finally {
   if(outStream != null) {
            try {
                outStream.flush();
                outStream.close();
            } catch (IOException e) {
                res.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value());
                throw new Exception(e);
            }
}
于 2016-01-04T16:57:13.490 回答