Olá pessoal.
Estou com um problema que não consigo identificar.
Primeiramente tenho o método de minha action, onde ele tem responsabilidade de tentar gerar um arquivo(xls/txt) para download e caso não consiga cai no catch onde será redirecionado para uma página onde será mostrada a mensagem encapsulada na Exception:
public String exportacao()
{
try
{
exportacaoVO = service.exportarLista(usuario, pagina);
}
catch (Exception e)
{
addActionError(ExceptionsUtil.getRootMessage(e));
log.log(Level.SEVERE,e.getMessage(),e);
return ERRO_PORTAL;
}
return DOWNLOAD;
}
Abaixo segue o mapeamento do struts.xml onde tenho dois result, o com name “download” que mostrará o arquivo na tela e com name “erroPortal” onde mostrará a página com a mensagem de erro.
<package name="exportacao-download" extends="portlet-default" namespace="/download">
<action name="personalizado" class="br.com.cbmp.portal.view.IndexAction">
<result name="erroPortal" type="freemarker">/WEB-INF/view/errorPortal.ftl</result>
<result name="download" type="stream">
<param name="contentType">${exportacaoVO.mimeType}</param>
<param name="contentDisposition">attachment;filename="${exportacaoVO.nomeDoArquivo}"</param>
</result>
</action>
</package>
Segue abaixo a forma que estou chamando minha action(o método que fará a exportação):
function exportacao()
{
document.getElementById('frmLancamentos').action = "/plugin/download/personalizado!exportacao.action";
document.getElementById('frmLancamentos').submit();
}
O problema é que não estou conseguindo mostrar o erro ou seja a mensagem que vêm encapsulado na execption, a parte que gera e mostra o arquivo está funcionando perfeitamente, mais caso aconteça algo que não consiga gerar o arquivo, que cai no catch a página sendo mostrada em branco, já fiz o teste e a mensagem está sendo encapsuladaaddActionError(ExceptionsUtil.getRootMessage(e));.
Caso alguém tenha idéia do que pode ser.
Obrigado pela ajuda.