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が原因で、outputstreamがライターによって占有されているため、サーバーはコンソールで既にコミットされたエラーの応答をスローします

4

1 に答える 1

0

出力ストリームを閉じる最終ブロックを作成します。次に例を示します。

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 に答える