Использование PrintWriter и OutputStream

Я создаю проект с помощью Struts, и у меня проблема с использованием Jasper IReports. Я хочу экспортировать некоторую информацию в файл PDF и продолжаю получать java.lang.IllegalStateException: getOutputStream () уже был вызван ... Исключение из-за открытия ServletOutputStream в моем коде, когда страница уже открывает PrintWriter.

Код находится в модели (поэтому он не в jsp, а в файле java), как показано ниже:

    public void handle(HttpServletResponse res, Connection connection, String path)throws Exception{
    ServletOutputStream out = null;
    try {

        JasperDesign jasperDesign = JRXmlLoader.load(path);
        JasperReport jasperReport = JasperCompileManager.compileReport(jasperDesign);
        byte[] bytes = JasperRunManager.runReportToPdf(jasperReport, null, connection);
        res.setContentType("application/pdf");
        res.setContentLength(bytes.length);
        out = res.getOutputStream();
        out.write(bytes, 0, bytes.length);
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        out.flush();
        out.close();
    }

Я проверил соединение, путь и HttpServletResponse и все работает нормально.

Я очень новичок в Jasper Reports, а также в кодировании PDF, так что вы можете - правильно - предположить, что у меня есть минимальное представление о том, что я здесь делаю, и что, очевидно, мой код копируется / вставляется откуда-то через сеть ,

Я попытался использовать PrintWriter вместо OutputStream, преобразовывая байты в строку и используя метод PrintWriter.append (String) (все мысли не String, а CharSequence), но он не извлекает данные в PDF.

Я также попытался получить PrintWriter, закрыть его, чтобы открыть OutputStream (не работает) или очистить его (ни один).

Любая помощь с решением использовать любое из них, которое может показать данные в формате PDF, было бы здорово. Большое спасибо!

Ответы на вопрос(4)

Ваш ответ на вопрос