Cercando di implementare l'esempio JSF 2.2 Ho il seguente codice:JSF 2.2 - fileupload non funziona con Ajax. Modulo sembra avere enctype non corretta (solo tramite AJAX)
<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>
Secondo alcuni JSF 2.2 questo dovrebbe funzionare, ma nel mio caso mi la sta dando seguente errore:
the request doesn't contain a multipart/form-data or multipart/mixed stream, content type header is application/x-www-form-urlencoded;charset=UTF-8
Guardando la richiesta anche se ho impostato correttamente la mia forma enctype, la richiesta parziale sottopone:
Content-type:application/x-www-form-urlencoded;charset=UTF-8 Faces-Request:partial/ajax
Si noti che anche web.xml è stato modificato per:
<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>
Sto usando Mojarra 2.2.0-M15, ma ha provato questo con le versioni precedenti pure. Qualcuno conosce qualche informazione utile su questo problema, che presumo sia un bug?
Grazie per la risposta BalusC. Mi sono infastidito con JSF2.2, quindi sono tornato all'ultima versione di JSF2.1 e ho utilizzato il kit di rendering Omnifaces per html5. Per il download ho seguito il tuo tutorial da http://balusc.blogspot.co.uk/2009/12/uploading-files-in-servlet-30.html e sorprendentemente ho ottenuto lo stesso errore. Causato da: org.apache.tomcat.util.http.fileupload.FileUploadBase $ InvalidContentTypeException: la richiesta non contiene un flusso multipart/form-data o multipart/mixed, l'intestazione del tipo di contenuto è application/x-www-form -urlencoded; charset = UTF-8 –
Forse stai annidando i moduli? Sarebbe stato un errore piuttosto ovvio se avessi mai tentato di isolare il problema in un vero SSCCE. – BalusC
Vorrei essere così fortunato. Quello che ho sopra è sulla sua stessa pagina e sul codice del tuo esempio. L'unico è un modulo e succede solo quando invio usando Ajax, altrimenti funziona correttamente. –