2010-12-14 6 views
1

nous développons une application web webflow printemps JSF et nous essayons d'utiliser les primefaces fileUpload widget de. primefaces fonctionne bien, les widgets sont rendus correctement. cependant le fileupload ne fonctionne pas. la fonction handlefileupload dans le backingbean FileUploadController n'est jamais appelée. D'autres composants de premier-plan, par exemple un bouton, peuvent appeler des fonctions dans ce bean, ainsi il est initialisé correctement. ci-dessous vous trouvez notre configuration. actuellement nous développons en éclipse et déployons l'application web avec maven et exécutons l'application avec un serveur jetée directement dans eclipse. déployer le .war sur tomcat ne fonctionnait pas non plus.Spring Webflow application + Primefaces, fileUpload ne fonctionne pas, Erreur HTTP et/ou IO Erreur

Problème:

  • après sélection du fichier et en cliquant sur télécharger le widget donne soit l'erreur « IO Erreur » ou « Erreur HTTP »
  • certaines données sont transférées sur le serveur (nous avons reniflé le réseau trafic)
  • fonction handlefileupload() dans le FileUploadController backingbean est jamais appelé

dépendances

  • org.primefaces 2.2.RC2
  • org.springframework.webflow, WebFlow et fait face 2.2.1.RELEASE
  • communes-fileupload 1.2.2
  • commons-io 2,0
  • com.sun. visages, api et impl 2.0.3
  • org.springframework.security

web.xml

<filter> 
<filter-name>PrimeFaces FileUpload Filter</filter-name> 
<filter-class>org.primefaces.webapp.filter.FileUploadFilter</filter-class> 
</filter><filter-mapping> 
<filter-name>PrimeFaces FileUpload Filter</filter-name> 
<servlet-name>Faces Servlet</servlet-name> 
</filter-mapping> 

start.xhtml

 <h:form id="mainForm" enctype="multipart/form-data" prependid="false" > 
     <p:fileUpload id="fileUp" fileUploadListener="#fileUploadController.handleFileUpload}" 
    description="Images" /></h:form> 

FileUploadController.java

public void handleFileUpload(FileUploadEvent event) { 
    System.out.println("FileUpload Test"); 

    FacesMessage msg = new FacesMessage("ok", event.getFile().getFileName() + " is uploaded."); 
    FacesContext.getCurrentInstance().addMessage(null, msg); 
} 

haricots-config.xml

<bean id="fileUploadController" class="de.hsrm.mi.media.FileUploadController" scope="session"></bean> 

Merci à l'avance. Nous espérons que quelqu'un peut nous aider :)

Répondre

0

Il y a et erreur ou que vous avez copié mal de votre fichier de xhtml

<h:form id="mainForm" enctype="multipart/form-data" prependid="false" > 
     <p:fileUpload id="fileUp" fileUploadListener="#fileUploadController.handleFileUpload}" 
    description="Images" /></h:form> 

Le « { » manque avant « fileUploadController.handleFileUpload} » devrait être:

<h:form id="mainForm" enctype="multipart/form-data" prependid="false" > 
     <p:fileUpload id="fileUp" fileUploadListener="#{fileUploadController.handleFileUpload}" 
    description="Images" /></h:form> 
+0

Merci pour votre réponse, mais malheureusement ce n'était pas le cas. C'était juste une faute de frappe ici. –

+0

Essayez d'ajouter dans votre site Web.xhtml: \t \t \t org.apache.myfaces.USE_ENCRYPTION \t \t false \t Ou plutôt quelque chose simmilar dans Mojarra. Sans ce param je ne peux pas télécharger le fichier aussi. Avez-vous un journal? Dans votre serveur d'application ou depuis log4j? –

2

utiliser ce filtre au lieu

<filter> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <filter-class> 
     org.primefaces.webapp.filter.FileUploadFilter 
    </filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>PrimeFaces FileUpload Filter</filter-name> 
    <servlet-name>Spring MVC Dispatcher Servlet</servlet-name> 
</filter-mapping> 
+0

Cette configuration est nécessaire pour une utilisation avec Spring Web Flow. L'exemple de document PrimeFaces utilise "Faces Servlet" au lieu de "Spring MVC Dispatcher Servlet". Seul le second fonctionne. – TheCoolah