Я использую JSF 2.1 и Primefaces. Когда пользователь отправляет форму, моя программа заполняет документ PDF и загружает его на компьютер пользователя, тогда мне нужно показать новую страницу с сообщением о состоянии. Мой код загружает заполненную форму, но не перенаправляет на страницу результатов.JSF загружается и пересылается на страницу результатов
PDDocument document = PDDocument.load("C:/Backup/test.pdf");
PDDocumentCatalog docCatalog = document.getDocumentCatalog();
PDAcroForm acroForm = docCatalog.getAcroForm();
....
заполняет fileds здесь ..
FacesContext facesContext = FacesContext.getCurrentInstance();
ExternalContext externalContext = facesContext.getExternalContext();
HttpServletResponse response = (HttpServletResponse) externalContext.getResponse();
response.setHeader("Content-disposition", "attachment; filename=\"test.pdf\"");
response.setHeader("Refresh", "1; URL=result.xhtml");
BufferedOutputStream output = null;
output = new BufferedOutputStream(response.getOutputStream());
document.save(output);
output.close();
facesContext.responseComplete();
Возможно, вы вызываете 'responseComplete()' немного слишком поздно на жизненном цикле. Переместите его сразу после извлечения 'HttpServletResponse'. Также убедитесь, что элемент управления, запускающий загрузку, не поддерживает ajax – kolossus