ale*_*der 3 jsf graphicimage omnifaces
我正在尝试显示存储在数据库中的内容.我有一个<o:graphicImage value="#{image.getById(1)}" />
.
注意:ID(1)仅用于测试.
我的财产看起来像:
@Lob
private byte[] image;
Run Code Online (Sandbox Code Playgroud)
我的dao /服务是这样的:
@Name
@ApplicationScoped
public class Images {
@Inject
private UserDAO userDAO;
public byte[] getById(int id) {
return userDAO.getUserByID(id).getImage();
}
Run Code Online (Sandbox Code Playgroud)
针对具体问题:
我刚刚实现了这一点,图像显示正确.我手动将图像设置到NULL
数据库中.
我的假设:没有找到图像,也没有显示图像(或者没有找到典型的"图像"图像).
但是:显示旧图像.即使重新启动服务器并清理干净.没有改变.我试图将其他图像上传到数据库 - 结果相同.
这里有什么问题?我的错在哪里?我怎样才能解决这个问题?
客户端正在缓存该映像.这<o:graphicImage>
在这方面非常有效.
您基本上需要清理浏览器缓存,或在浏览器中执行强制重新加载,或打开隐身窗口.
避免这种情况的一种方法是在lastModified
属性中包含图像的"最后修改"时间戳,该时间戳可以是a java.util.Date
或java.lang.Long
代表纪元时间.最好是将此属性添加到您的实体.
<o:graphicImage ... lastModified="#{image.lastModified}" />
Run Code Online (Sandbox Code Playgroud)
它最终将作为v=
生成的图像URL中的请求参数结束,从而在更改时欺骗浏览器缓存.
另一种方法是在方法参数中更改图像的ID.如果你仍然继续在HTML响应中提供旧的图像ID,那么这个视角也有点奇怪,而这个ID在数据库中不再存在.
归档时间: |
|
查看次数: |
937 次 |
最近记录: |