我正在尝试实现一个高级selectOneMenu
(PrimeFaces)以基于其标志图标选择语言环境。图标显示在列表中,但不显示所选项目(在展示柜中也是如此)。我该怎么办?
<p:selectOneMenu id="mySOMId" value="#{localeBean.locale}" var="mySOMVar" converter="#{localeConverter}" >
<f:selectItems
value="#{myBean.locales}"
var="localeSIVar"
itemLabel="#{localeSIVar.language}"
itemValue="#{localeSIVar}" />
<p:column style="text-align: center;" >
<h:graphicImage library="default" height="20" name="img/#{mySOMVar.language}.svg" />
</p:column>
</p:selectOneMenu>
我可以看到f:selectItems
有一个itemLabelEscaped
属性,可以使用该属性来输出<img>
tag itemLabel
,但是我不知道该放在那个属性上src
。
谢谢
您可以使用#{resource['library:name']}
语法来打印资源的URL,如如何在Facelets模板中引用CSS / JS /图像资源中所述。
因此,鉴于您实际上想使用
<h:graphicImage library="default" height="20" name="img/#{localeSIVar.language}.svg" />
内的itemLabel
,并且的itemLabelEscaped
属性<f:selectItems>
设置为true
,则可以使用以下语法作为的值itemLabel
:
itemLabel="<img height='20' src='#{resource['default:img/' += localeSIVar.language += '.svg']}' />"
笔记:
"
而不是这些单引号。+=
从EL 3.0开始,该操作员是新手。如果您仍在使用旧版本的EL,请转到如何在EL中连接字符串?在EL中串联字符串的替代方法(然后将其重新用作变量)。本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句