2014-12-12 2 views
1

Я пытаюсь экспортировать данные в файл xlsx в приложении JSF 2/Icefaces 3. Для этого я создаю книгу, инициализирую строки и ячейки и записываю их в выходной поток ответа, но у меня нет результата. Только песочные часы. У меня есть ajax-вызов на моей странице, но не на кнопке экспорта.Экспорт файла xlsx в приложение JSF 2/Icefaces 3

В Firebug, когда я смотрю ответ, у меня есть данные.

Действие в ManagedBean:

public String extractComments() throws TechnicalException { 

    try { 
     XSSFWorkbook wb= new XSSFWorkbook(); 
     XSSFSheet sheet = wb.createSheet("First sheet"); 
     XSSFRow row = sheet.createRow(0); 
     XSSFCell cell = row.createCell(0); 
     cell.setCellValue("Hello"); 

     FacesContext context = FacesContext.getCurrentInstance(); 
     ExternalContext externalContext = context.getExternalContext(); 
     externalContext.setResponseContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); 
     externalContext.setResponseHeader("Content-Disposition", "attachment; filename=\"" + getFilename() + "\""); 
     OutputStream out = externalContext.getResponseOutputStream(); 
     wb.write(out); 
     out.close(); 

     context.responseComplete(); 
    } catch (IOException e) { 
     logger.error("ERROR !", e); 
    } catch (Exception e) { 
     logger.error("ERROR",e); 
    } 

    return null; 
} 

кнопка

<ice:commandButton id="buttonExtractComments" value="#{msg['common.extract.comments']}" action="#{myBean.extractComments}" /> 

pom.xml

<dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi</artifactId> 
    <version>3.10-FINAL</version> 
</dependency> 
<dependency> 
    <groupId>org.apache.poi</groupId> 
    <artifactId>poi-ooxml</artifactId> 
    <version>3.10-FINAL</version> 
</dependency> 

с Firebug Запрос:

Accept text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding gzip, deflate 
Accept-Language fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3 
Content-Length 2934 
Content-Type application/x-www-form-urlencoded;charset=UTF-8 
Cookie JSESSIONID=54EE464F1BE4A632EDFEFB88F46EA32D; ice.push.browser=1i3pno3mu; ice.connection.lease=1418636730869; ice.connection.contextpath=.; ice.connection.running=bc445:acquired 
Faces-Request partial/ajax 
Host 127.0.0.1:8080 
Referer http://127.0.0.1:8080/myapp/pages/exctrat.xhtml 
User-Agent Mozilla/5.0 (Windows NT 5.1; rv:30.0) Gecko/20100101 Firefox/30.0 

в Firebug Ответ:

Content-Disposition attachment; filename="myFile.xlsx" 
Content-Type application/vnd.openxmlformats-officedocument.spreadsheetml.sheet 
Date Mon, 15 Dec 2014 09:45:29 GMT 
Server Apache-Coyote/1.1 
Transfer-Encoding chunked 
X-UA-Compatible IE=9 
+0

отлично! он работает, я отключил ajax, как показано. –

ответ

1

Насколько я знаю, вы не можете загрузить файл с помощью AJAX в JSF. В Pimefaces вы должны использовать атрибут ajax="false", чтобы загрузить файл. Поэтому убедитесь, что ваше действие не является ajax. Попробуйте так

<f:ajax disabled="true"/> 
+0

Спасибо, Куба! –

+0

Добро пожаловать! – Kuba

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