【问题标题】:graphicImage and streamed content primefaces and jsfgraphicsImage 和流内容 primefaces 和 jsf
【发布时间】:2017-09-12 10:33:01
【问题描述】:

所以,我已经设法将图像上传到我想要的位置,并且我为这些图像命名了与对象属性相同的名称,例如:水果包含名称苹果,我有一个 apple.jpg。 当我拨打<p:graphicImage name="apple.jpg" id="image" width="40" height="20" library="images" />时,我可以直接看到图像

假设我有一个包含所有水果的数据表,当我点击一些水果时,我想获取该水果的图片。

if(item.getFruit().getLogo().getName() == item.getFruit().getName()){
   //show me image
}

我已经搜索了整个堆栈,但我迷路了。

【问题讨论】:

  • 你能写一个具体的问题吗,也许你想要“如何显示所选行的相应图像?”。并尝试发布更完整的代码来更好地描述您的问题。

标签: primefaces jsf-2


【解决方案1】:

我会假设:

  • 您有一个包含图片的文件夹
  • 每个图片的 url 都作为字符串字段保存到 Fruit 实体中。

所以,当你从数据库加载一个 Fruit 实体时,你就有了一个完整的图片 url。

<ui:repeat var="fruit" value="#{fruitBean.fruitListFromDatabase}">
    <h:graphicImage value="#{fruit.imageUrl}" rendered="#{!empty fruit.imageUrl}" />    
    <h:graphicImage library="images" name="no-image.png" rendered="#{empty fruit.imageUrl}" />  
</ui:repeat>

前面的代码会为每个 Fruit 渲染一张图片,如果没有上传图片(imageUrl 为空),则显示一个自定义的 no-image.png。

h:graphicImage 在 web 应用的资源文件夹中有图像时必须使用指定库和名称属性。

使用 h:graphicImage 和 value 属性,显示完整的图像 URL。

为什么我们不能将上传的图像存储在应用程序资源文件中?因为在重新部署时,图像将会丢失。

要为您的自定义文件夹提供服务,您可以使用一些允许您创建虚拟服务目录的方法,例如,如果您使用 Glassfish,则在 glassfish-web.xml 中,您需要使用图片:

<property name="alternatedocroot_1" value="from=/media/* dir=/data" />

现在,可以找到图片:“your-domain.com/media/some-image.png”

【讨论】:

  • 我删除了您添加的 java 标签,因为这个问题与 java-se 无关(尝试使用普通 jdk、没有 servlet 容器、没有 jsf、什么都没有......你不会成功,因此与 java-se 无关)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多