【问题标题】:How to escape f:selectItems itemLabel attribute如何转义 f:selectItems itemLabel 属性
【发布时间】:2015-07-04 04:32:11
【问题描述】:

如何转义 f:selectItems itemLabel 以使用 HTML 标记?下面是代码

<h:selectManyListbox 
    id="geographicLoc"
    value="#{handlerBean.selectedGeographicLoc}">
    <a4j:ajax event="change" render="citiesID" status="newState" />
    <f:selectItem 
        itemLabel="All &nbsp; All" 
        itemValue="All" itemEscaped="false"/>
    <f:selectItems 
        value="#{handlerBean.geographicLocList}" 
        itemEscaped="false"/>
</h:selectManyListbox>

itemEscaped 属性适用于 f:selectItem 但不适用于 f:selectItems。

在 backingbean 中,geographicLocList 是 SelectItem 列表类型,我正在尝试在 java 中添加如下

final SelectItem selectItemS = new SelectItem();    
selectItemS.setLabel("&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;"
                        + country.getStateDesc());
selectItemS.setValue(country.getStateCode());
geographicLocList.add(selectItemS);

【问题讨论】:

    标签: jsf jsf-2.2


    【解决方案1】:

    根据&lt;f:selectItems&gt; tag documentation,您需要itemLabelEscaped 属性。

    <f:selectItem ... itemEscaped="false" />
    <f:selectItems ... itemLabelEscaped="false" />
    

    另见:

    【讨论】:

    • 对不起 :( 我错过了在我的帖子中提到我在参考 api 文档后也尝试过这个解决方案,但它对我不起作用。然后我遇到了你的一个解决方案(提供见也部分)在同一个论坛上,在那里我找到了 itemEscaped="false" 选项。但两者都不起作用。你在 Java 代码中看到创建 SelectItem 列表的任何问题吗?
    • 它对我有用。考虑发布 MCVE。 itemEscaped 仅适用于 &lt;f:selectItem&gt;
    • 我看到您是从 JSF 1.x 迁移到 2.x 的人,并且还遇到了与 c:forEach 类似的其他问题。总而言之,我猜你的 webapp 的运行时类路径被污染了。在继续编写代码之前,我会先解决这个问题。
    • 我已根据您的建议更新了所有上下文参数并删除了 ajaxanywhere 过滤器。从 POM 中删除了 facelets jar,添加了 myfaces-api、myfaces-impl、tomahawk 和 JSTL jar。更新了我的面孔配置。做了一个干净的Maven构建。不知道还有什么使类路径受到污染:(
    • 旧 jars 仍在部署文件夹中...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-26
    • 1970-01-01
    • 1970-01-01
    • 2012-04-05
    • 2015-06-22
    • 2011-12-01
    相关资源
    最近更新 更多