我正在使用Primefaces'工具提示组件,我正在寻找与p:inputNumber
字段一起使用的正确方法。
<p:inputNumber id="ctrl" title="Help for inputNumber" />
<p:tooltip id="toolTip" for="ctrl" showEvent="focus" hideEvent="blur"/>
<p:inputText id="ctrl2" title="Help for inputText"/>
<p:tooltip id="toolTip2" for="ctrl2" showEvent="focus" hideEvent="blur"/>
p:inputText
示例正在运行,而p:inputNumber
则不然。我已经发现问题是,p:inputNumber
呈现为<input>
嵌套在<span>
标记中。 <span>
标记获取id="ctrl"
属性,<input>
和id="ctrl_input"
属性。
所以我将工具提示的选择器更改为for="@(#ctrl_input)"
,这实际上有效:
<p:inputNumber id="ctrl" title="Help for inputNumber" />
<p:tooltip id="toolTip" for="@(#ctrl_input)" showEvent="focus" hideEvent="blur"/>
现在我的问题是,我使用嵌套在复合组件中的许多p:inputNumber
字段来更改<input>
标记的ID,因此我无法坚持@(#ctrl_input)
选择。我想出的唯一方法是添加父h:panelGroup
并将其客户端ID传递给<input>
标记。然后我可以按如下方式选择<input>
:
<h:panelGroup id="ctrlGroup">
<p:inputNumber id="ctrl3" title="Help for inputNumber" a:tooltipId="#{component.parent.clientId}"/>
<p:tooltip id="toolTip3" for="@(input[tooltipId='#{component.parent.clientId}']" showEvent="focus" hideEvent="blur"/>
</h:panelGroup>
所以这也有效,但是有更优雅的方式来选择正确的<input>
吗?