2015-02-04 3 views
0

У меня есть FileUpload в множественном режиме:Primefaces File Upload Multiple работает как единый

<p:fileUpload fileUploadListener="#{perosnaDesapBean.handleFileUpload}" mode="advanced"  dragDropSupport="false" 
multiple="true" allowTypes="/(\.|\/)(gif|jpe?g|png)$/" 
label="Elegir Imágenes" 
cancelLabel="Cancelar" 
uploadLabel="Subir" 
update="messages" 
/> 

И в моем управляемом компоненте имел ручку:

public void handleFileUpload(FileUploadEvent event) {  
    FacesMessage message = new FacesMessage(FacesMessage.SEVERITY_INFO, "Succesful", event.getFile().getFileName() + " is uploaded."); 
    FacesContext.getCurrentInstance().addMessage(null, message); 
} 

Для первого загружаемого файла появляется сообщение, но для второго ничего. Он запускает обработчик событий один раз.

Мой web.xml файл:

<context-param> 
    <param-name>primefaces.UPLOADER</param-name> 
    <param-value>auto</param-value> 
</context-param> 
<filter> 
<filter-name>PrimeFaces FileUpload Filter</filter-name> 
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class> 
</filter> 

управляемому боб @ConversationScoped, может быть, почему? Я использую PF: 5.1

Спасибо.

+0

Несвязанный с t он задает вопрос: я вижу этот контекстный параметр ('primefaces.UPLOADER'), все еще неуклюжий в наши дни (вместе с PrimeFaces 5.1). Это не работает для меня вместе с другими параметрами, которые я уже пытался использовать (например, «commons», «native»). – Tiny

+0

Какая версия JSF у вас есть? Может быть связано: http://stackoverflow.com/questions/20301314/jsf-2-0-primefaces-multiple-fileupload-does-not-remember-uploaded-files – robson

ответ

0

Пример: PF 5.1, 2.2 JSF, обыкновенные-IO-2,4, обыкновенные-FileUpload-1.3.1

Определение класса:

@ManagedBean (name="fileUploadManagedBean") 
@SessionScoped 
public class FileUploadManagedBean implements Serializable { 

    private static final long serialVersionUID = 1L; 
    private UploadedFile fileImage; 

    public UploadedFile getFileImage() { 
     return fileImage; 
    } 

    public void setFileImage(UploadedFile fileImage) { 
     this.fileImage = fileImage; 
    } 

    public void handleFileUpload(FileUploadEvent event) { 
     FacesMessage msg = new FacesMessage("Succesful", event.getFile() 
       .getFileName() + " is uploaded."); 
     FacesContext.getCurrentInstance().addMessage(null, msg); 
    } 

} 

определение XHTML:

<h:form enctype="multipart/form-data" > 
       <p:growl id="msg" /> 
       <p:fileUpload value="#{fileUploadManagedBean.fileImage}" 
           invalidSizeMessage="Size off" 
           invalidFileMessage="Type off" 
           fileLimitMessage="Only 4 files" 
           mode="advanced" multiple="true" fileLimit="4" sizeLimit="1951200" 
           allowTypes="/(\.|\/)(gif|jpe?g|png)$/" 
           fileUploadListener="#{fileUploadManagedBean.handleFileUpload}" 
           update="msg" /> 
</h:form> 

интернет .XML

<context-param> 
     <param-name>primefaces.UPLOADER</param-name> 
     <param-value>commons</param-value> 
</context-param> 
<filter> 
<filter-name>PrimeFaces FileUpload Filter</filter-name> 
<filter-class> 
    org.primefaces.webapp.filter.FileUploadFilter 
</filter-class> 
<init-param> 
      <param-name>thresholdSize</param-name> 
      <param-value>1951200</param-value> 
     </init-param> 
     <init-param> 
      <param-name>uploadDirectory</param-name> 
      <param-value>/tmpImages</param-value> 
     </init-param> 
</filter> 
<filter-mapping> 
<filter-name>PrimeFaces FileUpload Filter</filter-name> 
<servlet-name>Faces Servlet</servlet-name> 
</filter-mapping> 
+0

Хотя это может ответить на вопрос, лучше включить какое-то объяснение о том, что вы делаете. –