为了账号安全,请及时绑定邮箱和手机立即绑定

在<ui:repeat>内的<p:graphicImage>中显示数据库Blob图像

在<ui:repeat>内的<p:graphicImage>中显示数据库Blob图像

犯罪嫌疑人X 2019-10-29 11:08:16
我在JBoss 7.1.1上使用PrimeFaces 3.2。我试图显示存储在MySQL数据库中BLOB中的图像<ui:repeat>。图像存储在中byte[],然后转换为a StreamedContent,如下所示:InputStream stream = new ByteArrayInputStream(ingredient.getImage());ingredient.setJsfImage(new DefaultStreamedContent(stream, "image/jpg"));然后,我尝试将其显示在Facelet中,如下所示:<ui:repeat var="ingredient" value="#{formBean.ingredientResultSet}">    <p:panel id="resultsPanel" header="#{ingredient.location.shopName}">        <p:graphicImage value="#{ingredient.jsfImage}" alt="No picture set" />...但是,加载页面时,JBoss中出现以下错误:严重[org.primefaces.application.PrimeResourceHandler](http--127.0.0.1-8080-12)流动态资源时出错。这是怎么引起的,我该如何解决?
查看完整描述

3 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

我不明白你为什么需要这个。您可以只创建一个servlet,该servlet将通过映射“ /images/yourimage.jpg”从数据库中获取图像。


这是一个快速教程,其中包含有关如何执行此操作的相应代码。


查看完整回答
反对 回复 2019-10-29
?
精慕HU

TA贡献1845条经验 获得超8个赞

感谢BalusC。我这样做是通过在支持bean中定义一个整数并在更新ByteArray for image时为其分配一个不同的值来实现的。该整数用作图像的唯一标识符。然后,我将此整数设置为page <f:param>内的值<p:graphicImage>。


图片标签看起来像


 <p:graphicImage value="#{empBean.image}">

    <f:param name="id" value="#{empBean.imageId}" />

  </p:graphicImage>`

并将图像设置为backing bean为


 if(user.getPicture()!=null){

        imageId = (int) new Date().getTime();

        BinaryStreamImpl bs = new BinaryStreamImpl(user.getPicture());  

//picture is byte[] property in user class      

        this.image =   new DefaultStreamedContent(bs.getInputStream(), "image/png");

    }

现在工作良好。


查看完整回答
反对 回复 2019-10-29
  • 3 回答
  • 0 关注
  • 571 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信