java.lang.IllegalStateException: getWriter() уже был вызван для этого ответа2

В моем проекте JasperReports я создал отчет и пытаюсь его создать, но постоянно получаю следующее исключение:

Severe:   java.lang.IllegalStateException: getWriter() has already been called for this response
    at org.apache.catalina.connector.Response.getOutputStream(Response.java:746)
    at org.apache.catalina.connector.ResponseFacade.getOutputStream(ResponseFacade.java:206)
    at com.vehicletracking.vtss.classes.jsfbean.JasperReportBean.pdf(JasperReportBean.java:35)
    at com.vehicletracking.vtss.classes.jsfbean.DailyTrackingBean.generatePDFReport(DailyTrackingBean.java:471)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at javax.el.ELUtil.invokeMethod(ELUtil.java:326)
    at javax.el.BeanELResolver.invoke(BeanELResolver.java:536)
    at javax.el.CompositeELResolver.invoke(CompositeELResolver.java:256)
    at com.sun.el.parser.AstValue.getValue(AstValue.java:136)

Вот мой код:

public class JasperReportBean {

    public String pdf(List<DailyTrakingReportBean> jasperReportList) throws JRException, IOException {
        try {
            JRBeanCollectionDataSource beanCollectionDataSource = new JRBeanCollectionDataSource(jasperReportList);
            String reportPath = FacesContext.getCurrentInstance().getExternalContext().getRealPath("/reports/newReport.jasper");
            JasperPrint jasperPrint = JasperFillManager.fillReport(reportPath, new HashMap(), beanCollectionDataSource);
            HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
            httpServletResponse.addHeader("Content-disposition", "attachment; filename=FleetReport.pdf");
            ServletOutputStream outputStream = httpServletResponse.getOutputStream();
            JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream);
            FacesContext.getCurrentInstance().responseComplete();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

А вот мои библиотеки:

введите здесь описание изображения

Я не могу понять, где я делаю ошибку.


person zeeshan nazakat    schedule 27.06.2016    source источник
comment
comment
Я видел это, но не могу заменить getOutputStream() на getWriter(). Это дает мне много ошибок   -  person zeeshan nazakat    schedule 27.06.2016
comment
Я думаю, вопрос в том, как получить правильный getWriter, который уже используется. Если вы уже пробовали getWriter, подумайте об обновлении вашего вопроса с ошибкой и тем, что вы пробовали.   -  person tobi6    schedule 27.06.2016
comment
Я не использую getWriter нигде в коде   -  person zeeshan nazakat    schedule 27.06.2016
comment
Извините за неясность. Я не имел в виду, что вы его используете. Похоже, что Jasper Framework использует его. Теперь вопрос как получить коррент писатель.   -  person tobi6    schedule 27.06.2016
comment
Я решил это простым методом make string для void   -  person zeeshan nazakat    schedule 27.06.2016
comment
но проблема в том, что теперь я получаю новый серверный червь:   -  person zeeshan nazakat    schedule 27.06.2016
comment
log4j:WARN Не удалось найти приложения для регистратора (net.sf.jasperreports.extensions.ExtensionsEnvironment).   -  person zeeshan nazakat    schedule 27.06.2016
comment
Пожалуйста, используйте функцию редактирования, чтобы обновить свой вопрос с полным образцом кода и трассировкой стека. Комментариев для этого недостаточно.   -  person tobi6    schedule 27.06.2016