我有一个包含字段和上传文件的表单。它告诉我这个错误: javax.faces.FacesException:javax.servlet.ServletException:请求内容类型不是multipart / form-data。 我测试了fileupload没有字段,它的工作原理。 请帮我。 ajoutcours.xml
<p:growl id="messages" showDetail="true"/>
<p:panelGrid columns="2" style="margin-bottom:10px" >
<f:facet name="header">
Ajout Cours
</f:facet>
<h:outputText value="Intitulé"/>
<p:inputText id="nom3" value="#{coursController.cours.intitule}" required="true" requiredMessage="Le champ intitulé est obligatoire"/>
<h:outputText value="Description"/>
<p:inputText id="prenom3" value="#{coursController.cours.description}" required="true" requiredMessage="Le champ description est obligatoire"/>
<h:outputText value="Upload"/>
<h:inputFile value="#{demoBean.file1}" /><br/>
<h:outputText value="Compte"/>
<h:selectOneMenu id="comptecombo" value="#{coursController.cours.compte.compteId}">
<f:selectItems value="#{compteController.listCompte}" var="s" itemValue="#{s.compteId}" itemLabel="#{s.nom}" />
</h:selectOneMenu>
<h:outputText value="Type"/>
<h:selectOneMenu id="typecombo" value="#{coursController.cours.type.typeId}">
<f:selectItems value="#{typeController.listType}" var="s" itemValue="#{s.typeId}" itemLabel="#{s.nom}" />
</h:selectOneMenu>
<h:outputText value="Catégorie"/>
<h:selectOneMenu id="catcombo" value="#{coursController.cours.categorie.categorieId}" >
<f:selectItems value="#{categorieController.listCategorie}" var="s" itemValue="#{s.categorieId}" itemLabel="#{s.nom}" />
</h:selectOneMenu>
<p:commandButton value="enregistrer" id="eng1" actionListener="#{coursController.ajouter(actionEvent)}" action="#{demoBean.upload()}"/>
</p:panelGrid>
</h:form>
DemoBean.java:
public String upload() throws IOException {
InputStream inputStream = file1.getInputStream();
FileOutputStream outputStream = new FileOutputStream("D:\\tmp\\"+getFilename(file1));
byte[] buffer = new byte[4096];
int bytesRead = 0;
while(true) {
bytesRead = inputStream.read(buffer);
if(bytesRead > 0) {
outputStream.write(buffer, 0, bytesRead);
}else {
break;
}
}
outputStream.close();
inputStream.close();
return "test";
}