Ok. J'utilise la fonction PrimeFaces.Monitordownload pour surveiller la progression d'un téléchargement. D'abord le fichier est créé puis téléchargé. Si quelque chose ne va pas, un fichier d'erreur est créé et téléchargé avec du contenu en streaming au lieu de realfile. C'est bien et fonctionne bien. Le problème est résolu lorsque je veux ajouter un message d'erreur avec le fichier d'erreur. Je n'ai aucune idée de comment mettre à jour mon growl. Lorsque j'utilise PrimeFaces.monitorDownload, je dois définir ajax = false. Cela pourrait-il faire partie de mon problème?<p:growl/> ne montrera pas le message en utilisant PrimeFaces.MonitorDownload
J'ai essayé plusieurs choses, comme mettre update = "growl" sur le p: commandButton, autoUpdate = true sur le growl lui-même, mais rien. Je pourrais faire quelque chose de mal dans mon haricot, mais ne le pense pas.
Voici mon relevent code Java:
boolean fileCreated = processor.start();
if(fileCreated){
File xlsfile = new File(filePath);
InputStream stream = new FileInputStream(xlsfile);
file = new DefaultStreamedContent(stream, "file/xlsx", fileName);
return file;
}else{
fileName = fileName.replace(".xlsx", ".txt");
filePath = rootPath + fileName;
File xlsfile = new File(filePath);
InputStream stream = new FileInputStream(xlsfile);
file = new DefaultStreamedContent(stream, "file/txt", fileName);
message = new FacesMessage(FacesMessage.SEVERITY_WARN, "Something went wrong!", "Please send an email to servicedesk and alert the administrators of this page!");
FacesContext.addMessage(null, message);
return file;
}
Et mon xhtml:
<p:dialog modal="true" widgetVar="statusDialog" header="Status"
footer="Creating file. It might take up to 30 minutes, depending on the file size."
draggable="true" closable="false" resizable="false">
<p:graphicImage name="/bigLoader.gif"
style="margin-left :auto; margin-right:3.7cm;" />
</p:dialog>
<p:commandButton id="submitBtn" value="submit" ajax="false"
disabled="#{controllerBean.selectedBrands.size() lt 1}"
styleClass="btn btn-default"
onclick="PrimeFaces.monitorDownload(start, stop);">
<p:fileDownload value="#{controllerBean.file}" />
</p:commandButton>
<p:commandButton value="Add brand" styleClass="btn btn-default"
action="#{controllerBean.addBrand()}"
update=":first:brands: :first:tableGroup: :first:submitBtn:">
</p:commandButton>
Im en utilisant mojorra 2.2 primefaces 5.3 Toute aide très appréciée!
Désolé, mais ce would't faire. Ce n'est pas un fichier d'erreur vide. Il contient l'exception et le message que je voulais afficher, dit à l'utilisateur d'inclure ce fichier texte dans le ticket qu'il crée quand et si quelque chose ne va pas. Je l'ai résolu moi-même cependant. Voici comment je l'ai fait, si quelqu'un d'autre se trouve dans cette situation: J'ai ajouté une balise
SwissArmyKnife