Jsf 如何在<;p:graphicImage>;面对面?
我正在Jsf 如何在<;p:graphicImage>;面对面?,jsf,primefaces,jsf-2.2,graphicimage,Jsf,Primefaces,Jsf 2.2,Graphicimage,我正在上显示图像,这些图像存储在webroot\resources\fileUpload\product\u image\thumb目录下,如下所示 <p:graphicImage library="fileUpload" name="#{not empty row.prodImage?'product_image/thumb/':' '}#{row.prodImage}" alt="#{row.prod
上显示图像,这些图像存储在webroot\resources\fileUpload\product\u image\thumb
目录下,如下所示
<p:graphicImage library="fileUpload"
name="#{not empty row.prodImage?'product_image/thumb/':' '}#{row.prodImage}"
alt="#{row.prodName}"/>
行
指存储在java.util.List
中的JPA实体对象,该对象在迭代
时检索
当图像名称为空时,
的名称
属性计算为name=”“
。在这种情况下,仅将页面留空而不出现任何错误是行不通的
如果删除条件表达式中的
,则会导致抛出java.lang.StringIndexOutOfBoundsException
那么,如果要显示的图像不可用,如何在
上显示备用文本呢
如果删除了条件表达式中的
,则会导致抛出java.lang.StringIndexOutOfBoundsException
事实上,我复制了它。从技术上讲,这是PrimeFaces的GraphicImageRenderer中的一个bug。在第70行,它应该执行if(name!=null&&!name.isEmpty())
而不是单独执行name!=在尝试将其作为资源获取之前,null
我不确定他们是否值得修复它,因为指定一个空的名称实际上没有意义,而且通过有条件地渲染两个图像(一个没有名称,另一个有名称),解决方法相对简单:
<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}" />