在我的JSF页面中,我在一行列上使用了一个带有工具提示的数据表:
<p:dataTable var="item" ...>
<p:column headerText="#{bundle['item.name']}">
<!--
<h:outputText value="#{item.name}" title="#{simpleTooltipGenerator.generate(item)}"/>
-->
<h:outputText id="name" value="#{item.name}"/>
<p:tooltip for="name" escape="false" value="#{simpleTooltipGenerator.generate(item)}"/>
</p:column>
</p:dataTable>
simpleTooltipGenerator.generate()
是一个生成以下HTML工具提示的方法:
<div class="ui-tooltip-text ui-shadow ui-corner-all">
<table>
<tbody>
<tr><td class="key">Lastname</td><td class="value">Doe</td></tr>
<tr><td class="key">Firstname</td><td class="value">John</td></tr>
</tbody>
</table>
<div class="adresse spacer"></div>
<div class="adresse title">Address</div>
<table>
<tbody>
<tr><td class="key">OFFICE</td><td class="value">...</td></tr>
<tr><td class="key">HOME</td><td class="value">...</td></tr>
</tbody>
</table>
</div>
这工作如预期,但当我使用全局工具提示<p:tooltip escape="false"/>
与<h:outputText value="#{item.name}" title="#{simpleTooltipGenerator.generate(item)}"/>
只有生成的HTML代码显示在工具提示!使用固定文本作为全局工具提示有效吗?!
这是一个bug,全局工具提示不支持HTML内容,即使设置escape="false"
,还是不支持?!
我的环境是Primefaces 6.0 on WildFly 10.0.0-Final
From PrimeFaces Documentation:
全球提示…因为全局工具提示更有效由于在所有工具提示目标中只使用一个工具提示实例,因此建议使用它除非你有自定义的情况,例如不同的选项,自定义内容。
首先我要说这是不支持的。尽管如此,我还是尝试了一下。所以你的问题似乎是缺少globalSelector属性,默认为a,:input,:button
如果你想支持<h:outputText />
(它呈现为<span />
)绑定,只需添加一个属性选择器,如:
<p:tooltip escaped="false" globalSelector="a,:input,:button,span" />