2017-01-25 20 views
1

Когда кнопка «Загрузить», ActionListener не работает в случае использования ajax = «false», но при отсутствии использования ajax = «false», actionListener работает, но не загружается файл.Загрузка файла. Прайвемы не работают и не предпринимают никаких действий.

<html xmlns:p="http://primefaces.org/ui" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:fn="http://java.sun.com/jsp/jstl/functions" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:c="http://java.sun.com/jsp/jstl/core" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:tsc="http://java.sun.com/jsf/composite"> 

<h:form> 
<p:commandButton immediate="true" value="#{msgs.common_click_download}" 
    icon="ui-icon-arrowthick-1-s" process="@this" 
    rendered="#{manehHelperMB.isFileExist('/home/hazemelshenawy/111.txt')}"> 
    <p:fileDownload process="@this" contentDisposition="inline" 
     value="#{fileDownloaderMB.downloadFile('/home/hazemelshenawy/111.txt')}" /> 
</p:commandButton> 

</h:form> 
    </html> 

этот код Java

public class FileDownloaderBean implements Serializable { 
private DefaultStreamedContent file; 

public DefaultStreamedContent downloadFile(String filePath) { 
    if (filePath == null || filePath.isEmpty()) 
     return new DefaultStreamedContent(); 
    try { 
     File fi = new File("/home/hazemelshenawy/111.txt"); 
     InputStream input = new FileInputStream(fi); 
     ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); 
     try { 
      file = new DefaultStreamedContent(input, 
        externalContext.getMimeType(URLEncoder.encode(fi.getName(), "UTF-8")), fi.getName()); 
     } catch (UnsupportedEncodingException e) { 
      CommonUtils.log(e); 
     } 

    } catch (FileNotFoundException e) { 
     CommonUtils.log(e); 
    } 
    return file; 
    } 
} 
+0

Какой контейнер вы используете? Кот? У вас нет ошибок в журналах сервера? Tomcat по умолчанию не поддерживает передачу аргументов в el-выражениях, если вы не убедитесь, что вы правильно установили «el-impl-2.2.jar» или позже. – STaefi

+0

Tomcat 8, да, у меня нет ошибок в журналах сервера –

ответ

0

Там нет необходимости атрибута ActionListener в р: CommandButton при использовании с р: FileDownload, но вы должны иметь ajax="false", как указано в Primefaces fileDownload Homepage

попробовать для правильной установки пути к файлу. , например; В .xhtml файле

rendered="#{manehHelperMB.isFileExist('D:\\home\\hazemelshenawy\\111.txt')}"> 
value="#{fileDownloaderMB.downloadFile('D:\\home\\hazemelshenawy\\111.txt')}" 

и в Java класса

File fi = new File("D:\\home\\hazemelshenawy\\111.txt"); 

кроме того, вы должны иметь-акцессоры методы:

public DefaultStreamedContent getFile() { 
     return file; 
    } 
public void setFile(DefaultStreamedContent file) { 
     this.file = file; 
    } 

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

  • Нет связанных вопросов^_^