Pessoal, estou emitindo uma mensagem de erro pelo TemplateMessage do Jboss Seam, usa o addMessages do FacesContext do JSF…
A mensagem de erro aparece corretamente quando um erro ocorre, o problema é que quando o processo é executado com sucesso, a mensagem de erro continua na tela…
Código do Bean:
[code]public StreamedContent getCsvFile() {
Map<String, String> map = new HashMap<String, String>();
PddMessageUtil.put(map, "calculo.subsistema");
PddMessageUtil.put(map, "calculo.saldo_carteira");
PddMessageUtil.put(map, "calculo.saldo_prejuizo");
CSVFilter filter = new CSVFilter();
filter.setPeriodo(calculo.getDataBase());
try {
String file = csvService.gerarCsv(filter, map);
return new DefaultStreamedContent(FileUtils.getInputStream(new File(file)), "text/csv", "arquivo.csv");
} catch (Exception e) {
LOG.error("Erro ao gerar CSV", e);
error("global.msg.erro_generating_file");
}
return null;
}[/code]
Código do XHTML:
<p:commandLink id="downloadLink" ajax="false"
immediate="true"
onclick="PrimeFaces.monitorDownload(startDialog, stopDialog);">
<p:fileDownload value="#{calculoUI.csvFile}" />
<h:graphicImage url="#{resource['images/csv.png']}" />
</p:commandLink>
Tentativas:
- Emitir outra mensagem de sucesso, para substituir. Resultado: não funcionou, a mensagem nova ficou no pool, ela somente aparece quando outra requisição é feita, como exemplo, sair da tela
- Tentei limpar as mensagens, com o método clear() do org.jboss.seam.international.status.Messages
- Tentei colocando update=":form", update="@all", update=“msg”
- Tentei outras coisinhas também como ajax=“true”
Uma coisa que notei é que no final do link, quando clico no commandLink, ele adiciona um “#”, ou seja, com esse href, ele não faz nenhum requestDispatcher, talvez por falta dessa requisicao que ele não limpa a mensagem
- Tentei trocar o commandLink para commandButton para ele fazer alguma requisicao, mas o resultado foi o mesmo…
Alguem consegue pensar em outras coisas?
Eu conseguindo limpar a message, estaria bom já…
EDIT:
Meu messages é um simples p:messages do primefaces:
<p:messages id="msg" autoUpdate="true" globalOnly="true" />