JSF 2.2 - fileupload ne fonctionne pas avec l'Ajax. Forme semble être incorrect enctype (uniquement via AJAX)
Tentent de mettre en œuvre le programme JSF 2.2 exemple, j'ai le code suivant:
<h:form prependId="false" enctype="multipart/form-data">
<!-- Now it's the AJAX file upload component -->
<h:inputFile id="fileUpload" value="#{someBean.file}" >
<f:ajax />
</h:inputFile>
<h:commandButton value="Upload" />
</h:form>
Selon certains JSF 2.2 cela devrait fonctionner, mais dans mon cas, il me donne l'erreur suivante:
la demande ne contient pas de type multipart/form-data ou multipart/mixed
de flux, du type de contenu d'en-tête est
application/x-www-form-urlencoded;charset=UTF-8
À la recherche dans la demande, même si j'ai réglé mon form enctype correctement, le caractère partiel de la demande soumet:
Content-type:application/x-www-form-urlencoded;charset=UTF-8
Visages-Demande:partielle/ajax
Noter que web.xml a également été modifié afin de:
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<multipart-config>
<location>c:\dotmp</location>
<max-file-size>20848820</max-file-size>
<max-request-size>418018841</max-request-size>
<file-size-threshold>1048576</file-size-threshold>
</multipart-config>
</servlet>
Je suis en utilisant Mojarra 2.2.0-m15 mais a essayé avec les versions antérieures. Personne ne sait toutes les infos utiles sur ce problème, qui je suppose est un bug?
OriginalL'auteur Ioannis Deligiannis | 2013-05-02
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr de ce qu'il se passe que je n'ai pas vu cela avant. La suite de construire des ouvrages pour moi lors de l'utilisation de l'information d'aujourd'hui Mojarra 2.2.1 instantané que vous pouvez télécharger à partir de la "la mise en œuvre jar" lien mentionné dans Quoi de neuf dans la JSF 2.2?
avec
Je vous recommande de donner la plus récente Mojarra version de l'essayer. Il y a apparemment un bug dans une ancienne Mojarra version qui a échoué à créer une bonne
multipart/form-data
demande l'aide de la<iframe>
hack qui en fin de compte la cause de cette erreur. LemXX
versions sont des versions bêta de toute façon et ne doit pas être invoqué pour la production. Cette erreur pourrait théoriquement avoir été aussi un navigateur spécifique, mais il fonctionne très bien pour moi en Chrome 26, Firefox 20 et IE 10.La seule question que je vois, c'est que l'caché
<iframe>
est encore visible dans Chrome et Firefox comme ci-dessous:Il semble qu'ils sont oublié de définir
frameborder
attribut0
dans le générés<iframe>
. J'ai signalé question 2861 à ce sujet.Vous êtes peut-être l'imbrication des formes? Aurait été plutôt une erreur évidente que si vous avez déjà tenté d'isoler le problème en un fullworthy SSCCE.
Souhaitez j'ai été chanceux. Ce que j'ai ci-dessus est sur sa propre page, ainsi que le code à partir de votre exemple. Le n'est qu'une forme et il ne se passe lorsque je soumets à l'aide d'Ajax, sinon il fonctionne très bien.
La JSF 2.0 composant téléchargement de fichier à partir de mon blog n'est pas f:ajax compatible. La JSF 2.2 builtin composant téléchargement de fichier est.
J'ai essayé le pot que vous avez fourni et il fonctionne très bien. À partir de ce que je peux dire que le javascript n'a pas pris en compte le type de formulaire et fait sa propre décision à la forme type. Connaissez-vous un repository maven avec la dernière jsf2.2.1-SNAPSHOT ?
OriginalL'auteur BalusC
J'ai corrigé le JavaScript de JSF (et d'autres pièces) afin de permettre à Multipart demandes avec ou sans AJAX sur servlet standard 2.
La JSF 2.2 de téléchargement de fichiers fonctionne début avec servlet version 3. En outre, les responsables de la couche de transport appelé "IFrame " Transport" n'était pas en état de libération. J'ai donc ajouté un transparent Multipart demande, complété de la couche de transport et de mettre tous ensemble pour un téléchargement tag:
La Balise travaille en collaboration avec l'AJAX, avec la traditionnelle page de soutient et avec servlet standard 2 /3. Pas la plus belle de la mise en œuvre, mais il travaille presque transparent. La solution est accessible à http://www.intersult.com/wiki/page/JSF%20Ext#section-JSF+Ext-FileUpload (Veuillez utiliser la traduction).
Commentaires bienvenus.
J'ai soulevé un parent bug quelques semaines mais il est toujours en attente. Voir:java.net/jira/browse/JAVASERVERFACES-2871
OriginalL'auteur Tires
J'ai eu le même problème avec PrimeFaces
<p:fileUpload mode="simple"
à l'aide de javax.faces-2.2.6.jar. Le problème a disparu quand j'ai désactivé l'ajax de mon<h:commandButton
. Dans mon cas, c'était OK pour actualiser la page entière.OriginalL'auteur Panu Haaramo