Bonjour,
je développe une petite application web en Java EE, dans celle-ci je dois pouvoir importer une liste d'étudiants (en fichier excel).
Cependant je suis confronté à un soucis que je n'avais pas avant :/
Je m'explique, le fichier choisit (Part) dans l'inputFile est null lorsque que mon bouton charger fichier est un mais si celui-ci est un le fichier (Part) n'est plus null mais le problème est que lorsque j'utilise un commandButton mon Modal apparaît et disparaît aussi vite :/
Voici l'erreur :
serverError: class javax.faces.el.EvaluationException
Voici mon xHtml :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| <h:form enctype="multipart/form-data">
<h:inputFile value="#{etudiantController.file}" id="file"
styleClass="btn btn-primary" style="width:30%" required="true"
requiredMessage="Veuillez sélectionner un fichier" />
<b:messages for="file" />
<hr/>
<b:button tooltip="Charger le fichier choisit" tooltip-position="auto"
id="submit" onclick="$('.modalDialog2').modal();"
value="Charger"
styleClass="btn btn-success" ajax="false" style="width:30%" />
<b:growl id="growlMsg" globalOnly="true" placementFrom="bottom"
show-detail="true" show-summary="false" allowDismiss="true"
delay="10000" escape="true" />
</h:form>
</b:jumbotron>
</div>
<h:form id="myFormID2">
<b:modal id="dia2" title="Chargement liste étudiant" styleClass="modalDialog2"
closable="false" close-on-escape="false" backdrop="false">
<p>Attention cette action supprimera tout les étudiants !</p>
<br />
<f:facet name="footer">
<b:button value="Fermer" dismiss="modal" />
<b:commandButton action="#{etudiantController.save()}" value="Enregistrer" look="primary" onclick="$('.modalDialog2').modal('hide');ajax:blockUIBean.waitFiveSeconds();"
dismiss="modal" styleClass="btn btn-danger" />
</f:facet>
</b:modal>
</h:form> |
Voici ma méthode save() qui se charge de créer les étudiants selon le fichier choisit dans l'inputFile :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| private Part file;
public void save() throws InvalidFormatException, EncryptedDocumentException, org.apache.poi.openxml4j.exceptions.InvalidFormatException, IOException {
File cFile = new File(file.getSubmittedFileName());
try {
cFile.createNewFile();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
try (InputStream input = file.getInputStream()) {
Files.copy(input, cFile.toPath(),StandardCopyOption.REPLACE_EXISTING);
}
catch (IOException e) {
e.printStackTrace();
}
/* for(Etudiant e: etudiants) {
gestionEtudiant.deleteEtudiant(e);
}*/
gestionEtudiant.deleteAll();
etudiants.clear();
try {
etudiants = ExcelReader.getEtudiants(cFile);
for(Etudiant e : etudiants) {
gestionEtudiant.addEtudiant(e);
}
loadFile = true;
}catch(Exception e) {
loadFile = false;
}
} |
Lorsque je lance l'appli en mode debug l'erreur provient de cette ligne-ci
File cFile = new File(file.getSubmittedFileName());
Apparemment file serait null.
J'espère que vous pourrez m'éclairer sur ce problème car il est assez embêtant, merci d'avance
ps : les balises xHtml avec b sont des balises BootsFaces.
https://www.bootsfaces.net/
Partager