Я использую springbatch для вызова отчета о яшме с использованием JSF. Проблема в том, что при вызове метода facecontext всегда равен нулю, поэтому я могу получить сеанс. Что касается различных проблем, которые я читал, я понимаю, что проблема в том, что пакетный процесс не входит в жизненный цикл JSF. КАК я могу создать экземпляр FacesContext, чтобы получить информацию о сеансе? Я пытаюсь создать FacesServlet, но я не уверен, в какой момент я могу его вызвать и как получить информацию о запросе и ответе.
HttpServletResponse httpServletResponse = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse();
httpServletResponse.addHeader("Content-disposition", "attachment; filename=" + nombreReporte + ".pdf");
ServletOutputStream servletOutputStream = httpServletResponse.getOutputStream();
JasperExportManager.exportReportToPdfStream(jasperPrint, servletOutputStream);
FacesContext.getCurrentInstance().responseComplete();
FacesContext
разработан как синглтон. Это единственный способ с ним работать. Проблема здесь в том, действительно ли у вас есть контекст сервлета в вашем контексте Spring Batch? Позвольте мне поколебаться. Если у вас его нет, как вы притворяетесь, что имеете доступ к информации HttpSession? - person Xtreme Biker   schedule 02.04.2014