gpt4 book ai didi

java - 在同一页面上处理无请求丢失的文件下载链接

转载 作者:行者123 更新时间:2023-11-30 09:30:43 35 4
gpt4 key购买 nike

当相应文件丢失时,处理文件下载链接点击的最佳做法是什么?

具体情况是数据库中存在附件实体,仅指向文件名,文件存放路径可以单独/单独配置。这适用于旧版应用,必须得到支持。

这可能吗?这样的代码是什么样的?我试过了

    if ( file.canRead() )
{
byte[] data = FileUtils.readFileToByteArray( file );

// goes to code like here: http://balusc.blogspot.de/2006/05/pdf-handling.html
downloadFile( attachment.getFileName(), data );
}
else
{
this.log.errorv( "Attachment {0} not found in configured storage path {1}", file, this.storagePath );

FacesContext facesContext = FacesContext.getCurrentInstance();

facesContext.addMessage( null,
new FacesMessage( FacesMessage.SEVERITY_ERROR, "Failed.",
"Downlosding file " + file + " failed! File doesn't exist in the configured storage path " + this.storagePath ) );

// ???
facesContext.responseComplete();
}

但这会导致

XML-Verarbeitungsfehler: Kein Element gefunden
Adresse: https://localhost:8181/cmc-compliance/view/prototype/collisionManager.xhtml
Zeile Nr. 1, Spalte 1:

( <rant> OMG,我 HATE ...呃DISLIKE int18ned 错误消息...有人应该摆脱这个人谁认为这是个好主意... </rant> )

好的,上面的意思是“XML 处理错误:未找到元素 + 第 1 行,第 1 列”

我的代码显然不是正确的方法...

我在数据表中使用 JSF 代码:

<h:commandLink action="#{attachmentManager.downloadAttachment(att)}">
<h:graphicImage library="images/icons" name="page_white.png" />
<h:outputText value="#{att.fileName}" />
</h:commandLink>

理想情况下,我想要的是显示 JSF 消息(或 PrimeFaces 咆哮),然后保持页面原样,即不再在同一页面上发出完整请求。

你是怎么做到的?

最佳答案

使用 facesContext.responseComplete(); 基本上可以防止 JSF 呈现响应。因此,客户端检索到一个完全空的响应。网络浏览器正试图充分利用它。网络浏览器只知道所请求的资源具有 .xhtml 文件扩展名。所以网络浏览器假定它是一些 XML 内容。然后网络浏览器尝试将空响应解析为 XML。但是由于根本没有 XML 元素,它因给定错误而惨败。一个格式良好的 XML 文档需要至少一个根 XML 元素。

删除 facesContext.responseComplete(); 行并以通常的方式从该方法返回。当您已经自己写入响应时,您应该使用facesContext.responseComplete();,例如在此提供文件下载特殊情况。


OMG, I HATE int18ned error messages... someone should get rid of the person who thought this is a good idea...

只需在平台特定设置中相应地更改操作系统平台默认语言环境。如果是 Windows,可以在此处找到带有屏幕截图的相关答案:Getting OS language in java .如果程序本身(例如 Firefox/Chrome)也有一些与语言环境相关的设置,您可能还想在程序本身中更改它。

关于java - 在同一页面上处理无请求丢失的文件下载链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13160468/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com