繁体   English   中英

如何显示替代文字 <p:graphicImage> 在PrimeFaces?

[英]How to display alternate text on <p:graphicImage> in PrimeFaces?

我在<p:graphicImage>上显示图像,这些图像存储在webroot\\resources\\fileUpload\\product_image\\thumb目录下,如下所示。

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

row指的是存储在java.util.List<Entity>的JPA实体对象,该对象在迭代<p:dataTable>被检索。


当图像名称为空时, <p:graphicImage>name属性将被计算为name=" " 在这种情况下,它只是将页面留空而没有任何错误。

如果&nbsp; 然后,在条件表达式中删除它会导致抛出java.lang.StringIndexOutOfBoundsException

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

如果&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}" />

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM