2013-03-28 2 views
2

Я использую 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(); 
+0

Возможно, вы вызываете 'responseComplete()' немного слишком поздно на жизненном цикле. Переместите его сразу после извлечения 'HttpServletResponse'. Также убедитесь, что элемент управления, запускающий загрузку, не поддерживает ajax – kolossus

ответ

0

Вы можете следить за один из них:

  1. Вариант 1

    я. Перенаправление пользователя на страницу результатов

    ii. Показать пользователя Загрузить кнопку, при нажатии этой кнопки откройте новое окно, в котором будет показано/загружено PDF.

  2. Opntion 2

    я. Перенаправление пользователя на страницу результатов

    ii. Когда страница результатов загружается, используя javascript/jQuery отправляет запрос на открытие нового окна, в котором будет отображаться/загружен PDF.

Смежные вопросы