【问题标题】:h:graphicImage is not downloaded when its value is updated through f:ajaxh:graphicImage 通过 f:ajax 更新其值时不会下载
【发布时间】:2012-04-03 23:50:03
【问题描述】:

我在页面上有一个图像组件:

<h:graphicImage value="/imageServlet?imageId=#{someBean.imageId}"/>

在页面下方,我有一个 commandLink,其中包含:

<f:ajax execute="@form" render="@all"></f:ajax>

当我单击命令链接时,页面中的所有部分都会更新。这也包括图像的src。因此,我可以在 firebug 中看到 h:graphicImage 已成功更新。

现在,问题是,即使src 已更新,新图像也不会从服务器下载,因此我在应该出现图像的位置得到一个“X”。当我右键单击图像并单击“查看图像”时,它已成功下载。

我的问题是,是否有其他方法可以使用 ajax 更新 h:graphicImage,或者我需要采取其他措施来完成预期的行为?

注意: 我使用的是 Mojarra 2.1.6、Tomcat 7,并且我没有使用任何第三方组件套件。

谢谢,

塞尔坎

【问题讨论】:

  • 感谢@BalusC 的指针,但这似乎是一个不同的用例。在我的例子中,图像组件正在请求一个已经存在的图像(通过图像 servlet 和图像 servlet - 当访问时 - 以正确的图像和正确的 mime 类型等响应)。 ajax 命令基本上更新页面,组件(加载时)请求现有的 url,我可以看到 src 已更新(尽管浏览器未请求图像)
  • 嗯好的,因此 ajax 响应返回了一个 &lt;img src&gt; 与不同的 imageId 参数值?大家都试过哪些浏览器?
  • 是的,src 已更新。我试过 IE、Chrome、Firefox 和 Safari(所有最新的主要版本)
  • 只是想对此进行跟进,问题仍未解决。我已经通过使用 javascript 在图像 url (src) 的末尾附加时间戳参数来解决这个问题。 js 导致图像从新的时间戳 url 重新加载。这是一个肮脏的解决方案,但至少提供了一些可接受的功能

标签: ajax image jsf facelets mojarra


【解决方案1】:

这可能是与浏览器相关的问题。您是否尝试过禁用浏览器缓存?

【讨论】:

  • 我试过检查浏览器缓存,不是问题。事实上,这种情况发生在浏览器之前未访问过的图像上。如果图像显示一次,则后续请求同一图像时不会出现问题。另外,我在 IE、FF、Chrome、Safari 上都试过了,结果都一样
猜你喜欢
  • 2014-09-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-24
  • 2016-02-08
  • 1970-01-01
  • 1970-01-01
  • 2013-01-02
相关资源
最近更新 更多