我需要找到一种在生成文件下载后执行页面导航的方法。到目前为止,我已经准备好文件下载并可以正常工作:
FileInputStream stream = new FileInputStream(file);
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext ec = fc.getExternalContext();
ec.responseReset();
ec.setResponseContentType("application/octet-stream");
ec.setResponseHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
OutputStream out = ec.getResponseOutputStream();
byte[] outputByte = new byte[4096];
while(stream.read(outputByte, 0, 4096) != -1)
{
out.write(outputByte, 0, 4096);
}
stream.close();
out.flush();
out.close();
fc.responseComplete();
到目前为止,我已经尝试从 ExternalContext 重定向,但我得到了一个 IllegalStateException。
ec.redirect(url)
我还尝试将所有以前的代码包装在一个字符串方法中,该方法返回最后要导航的页面。那也没有用。
有什么建议吗?