2013-11-22 26 views
1

我在<p:graphicImage>上显示存储在webroot\resources\fileUpload\product_image\thumb目录下的图像,如下所示。如何在PrimeFaces的<p:graphicImage>上显示替代文本?

<p:graphicImage library="fileUpload" 
       name="#{not empty row.prodImage?'product_image/thumb/':'&nbsp;'}#{row.prodImage}" 
       alt="#{row.prodName}"/> 

row是指同时迭代一个<p:dataTable>其检索存储在java.util.List<Entity> JPA实体对象。


当图像名是空的,的<p:graphicImage>name属性进行评估,以name=" "。在这种情况下,仅仅在没有任何错误的情况下将页面留空即可。

如果条件表达式中的&nbsp;被删除,则会导致java.lang.StringIndexOutOfBoundsException被抛出。

那么,如果要显示的图像不可用,如何在<p:graphicImage>上显示替代文本?

回答

3

&nbsp;如果在条件表达式被移除然后,就引起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}" /> 
+0

完成!谢谢。 – Tiny

+0

不客气。 – BalusC

相关问题