Jsf 如何在p:SelectOne菜单的选定项上显示图像

Jsf 如何在p:SelectOne菜单的选定项上显示图像,jsf,primefaces,selectonemenu,Jsf,Primefaces,Selectonemenu,我正在尝试实现一个高级的selectOneMenu(PrimeFaces)来根据标志图标选择区域设置。图标会显示在列表中,但不会显示所选项目的图标(在上也会出现相同情况)。我怎么能这样做 <p:selectOneMenu id="mySOMId" value="#{localeBean.locale}" var="mySOMVar" converter="#{localeConverter}" > <f:selectItems value="#{myB

我正在尝试实现一个高级的
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
属性,我可以使用它来输出

谢谢

您可以使用
{resource['library:name']}
语法打印资源的URL,如中所示

所以,考虑到你实际上想使用

<h:graphicImage library="default" height="20" name="img/#{localeSIVar.language}.svg" />
注:

  • 这里只能使用纯HTML,不能使用JSF组件
  • 为了提高可读性,最好在纯HTML中使用单引号作为属性值分隔符,而纯HTML又被声明为一个由双引号包围的属性。当然,您也可以使用
    而不是这些单引号
  • 如上图所示,单引号在EL表达式中仍然可以正常工作,无需重新转义。您甚至可以在EL表达式中使用双引号,但代码编辑器中的语法高亮显示在这里很容易失败,可能会造成不必要的混乱
  • +=
    操作符是自EL 3.0以来的新操作符;如果您仍然使用较旧的EL版本,请使用其他方法在EL中连接字符串(然后将其作为变量重用)

从某处放置静态图像有效吗?我不希望它包含html。您尝试过了吗?@Kukeltje您的意思是在
itemLabel
内部吗?如果是,是的,我只是尝试将以下内容放在那里,并且成功了。
itemLabel=“img src=”https://someurl/icon.png“height='20'/”
itemLabel="&lt;img height='20' src='#{resource['default:img/' += localeSIVar.language += '.svg']}' /&gt;"