2010-05-07 6 views
2

J'utilise Primefaces 2.0.1 mais le composant FileUpload ne fonctionne pas correctement. Il utilise JQuery télécharger en coulisse. Ceci est mon web.xmlPrimefaces p: problème de composant fileupload

<?xml version="1.0" encoding="UTF-8"?> 
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 

    <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> 


    <servlet> 
     <servlet-name>Faces Servlet</servlet-name> 
     <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>Faces Servlet</servlet-name> 
     <url-pattern>*.jsf</url-pattern> 
    </servlet-mapping> 


    <servlet> 
     <servlet-name>Resource Servlet</servlet-name> 
     <servlet-class>org.primefaces.resource.ResourceServlet</servlet-class> 
     <load-on-startup>1</load-on-startup> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>Resource Servlet</servlet-name> 
     <url-pattern>/primefaces_resource/*</url-pattern> 
    </servlet-mapping> 



    <welcome-file-list> 
     <welcome-file>index.jsf</welcome-file> 
    </welcome-file-list> 
</web-app> 

Ceci est mon index.xhtml: -

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html" 
     xmlns:p="http://primefaces.prime.com.tr/ui"> 
    <h:head> 
     <title>Facelet Title</title> 
    </h:head> 
    <h:body> 
     <h:form prependId="false"> 
      <h:commandButton actionListener="#{NewJSFManagedBean.add}" value="add"/> 
      <p:fileUpload auto="false" widgetVar="fileUpl" fileUploadListener="#{NewJSFManagedBean.saveFile}"/> 

     </h:form> 
    </h:body> 
</html> 

Je suit les bibliothèques dans mon classpath: -

primefaces 2.0.1 
commons-beanutils 
commons-beanutils-bean-collection 
commons-digestor 
commons-fileUpload 
commons-io 
commons-logging 
jhighlight 

Le fichier est téléchargé correctement/tmp mais dans le navigateur il dit toujours l'erreur HTTP. Aidez-moi, s'il vous plaît. Il a travaillé jusqu'à hier. Mais aujourd'hui j'ai fait une nouvelle installation de Glassfish et ça a cessé de fonctionner.

+0

Avez-vous trouvé comment résoudre votre problème? –

+0

Regardez ce lien. [LINK] (http://weblogs.java.net/blog/wvreeven/archive/2010/01/06/getting-started-primefaces-glassfish-v3) – edze

+0

duplication possible de [Comment utiliser PrimeFaces p: fileUpload? méthode Listener est jamais invoqué] (http://stackoverflow.com/questions/8875818/how-to-use-primefaces-pfileupload-listener-method-is-never-invoked) – BalusC

Répondre

1

J'ai également rencontré des problèmes avec ce composant. Il me semble me souvenir qu'en ajoutant un identifiant au composant fileUpload et/ou au formulaire, les choses ont commencé à fonctionner pour moi. Ça vaut le coup d'essayer.

+0

Salut Kyle, J'ai fait exactement ce que vous avez dit et ça a commencé à fonctionner. Puis j'ai enlevé l'identifiant et pourtant ça marche !! Ensuite, je me suis déconnecté et à nouveau connecté et redémarré Glassfish et Netbeans et encore ça fonctionne. Je ne sais pas ce qui se passera demain. Je vais vous en dire plus sur ce composant. C'est très peu fiable. Cela ne nous dit même pas où est l'erreur. Le mieux qu'il puisse donner est "l'erreur HTTP" mais ne nous dit même pas un peu où est l'erreur, quelle exception est là.Nous devons juste continuer à tirer dans l'obscurité. Vous ne croirez pas que je passe hier 12 heures à essayer de comprendre – TCM

+0

pourquoi mon code existant a cessé de fonctionner. Je n'ai même pas fait changer un seul caractère. Je viens d'installer Glassfish V3. Probablement c'est un problème avec Glassfish et Flash. Je ne sais pas, mais aujourd'hui c'est l'ambiance est sympa donc ça marche mais je ne sais toujours pas la raison exacte de l'erreur HTTP. Sur le forum Primefaces aussi personne ne semble répondre. – TCM

1

Je pense qu'il vous manque enctype = "multipart/form-data" dans votre balise h: form.

1

J'ai eu le même problème. Et notez qu'en supprimant les cookies de mon navigateur-firefox-et en allant télécharger mon application et cela a fonctionné.

-1

J'utilise PRIMEFACES 2.2.1 et le problème est toujours là: HTTP erreur lorsque Chrome ou Firefox est utilisé; tout va bien avec IE. Dans mon cas, cela se produit apparemment en raison d'un proxy inverse protégeant le serveur réel exécutant l'application. Si l'application est utilisée via une référence URL directe (http: // serveur: port/un chemin d'accès), cela fonctionne correctement; Si l'URL de proxy inverse est utilisée, les demandes échouent. Je ne sais pas pourquoi cela échoue en FF et GC et ne le fait pas dans IE.

+0

Est-ce une réponse? –

+0

C'est une réponse, technique. Il a cliqué sur "Poster votre réponse" - donc c'est évidemment sa réponse à la question. Ce n'est pas une bonne réponse, en effet. Je ne peux pas encore déprécier. – alexander

3

Un filtre doit être ajouté à web.xml. Alors, ajoutez ces lignes à web.xml

<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>51200</param-value> 
</init-param> 
<init-param> 
    <param-name>uploadDirectory</param-name> 
    <param-value>/tmp</param-value> 
</init-param> 
</filter> 
<filter-mapping> 
<filter-name>PrimeFaces FileUpload Filter</filter-name> 
<servlet-name>Faces Servlet</servlet-name> 
</filter-mapping> 

Pour pouvoir utiliser le composant Primefaces fileUpload, quelques dépendances Apache Commons doivent également être ajouté:

<dependency> 
<groupId>commons-fileupload</groupId> 
<artifactId>commons-fileupload</artifactId> 
<version>1.2.1</version> 
</dependency> 
<dependency> 
<groupId>org.apache.commons</groupId> 
<artifactId>commons-io</artifactId> 
<version>1.3.2</version> 
</dependency> 
+0

Cela a fonctionné pour moi, merci! – loscuropresagio

+0

Cette dépendance doit être mentionnée dans la documentation de Primfaces ** dans la section de téléchargement de fichiers **. Merci beaucoup. – Salazaar