我在<p:graphicImage>
上显示的图像存储在webroot\resources\fileUpload\product_image\thumb
目录下,如下所示。
<p:graphicImage library="fileUpload"
name="#{not empty row.prodImage?'product_image/thumb/':' '}#{row.prodImage}"
alt="#{row.prodName}"/>
row
指的是存储在java.util.List<Entity>
中的JPA实体对象,该对象在迭代<p:dataTable>
时被检索。
当图片名称为空时,name
的{{1}}属性将评估为<p:graphicImage>
。在这种情况下,只是将页面留空而没有任何错误,它不起作用。
如果条件表达式中的name=" "
被删除,则会导致
被抛出。
那么,如果要显示的图像不可用,如何在java.lang.StringIndexOutOfBoundsException
上显示替代文字?
答案 0 :(得分:3)
如果条件表达式中的
被删除,则会导致java.lang.StringIndexOutOfBoundsException
被抛出
确实,转载它。这在技术上是PrimeFaces'GraphicImageRenderer
中的一个错误。在第70行,它应该在尝试将其作为资源之前完成if(name != null && !name.isEmpty())
而不是单独name != null
。
我不确定它们是否值得修复它,因为它实际上没有意义指定一个空的name
并且通过有条件地渲染两个图像(一个没有名称和一个图像)来解决方法相对容易另一个名字为:
<p:graphicImage alt="#{row.prodName}" rendered="#{empty row.prodImage}" />
<p:graphicImage library="fileUpload" name="product_image/thumb/#{row.prodImage}" alt="#{row.prodName}" rendered="#{not empty row.prodImage}" />