我正在尝试检索 p:dataList 中的 h:panelGroup 的客户端 ID。
我尝试了两种方法:
1.使用 component.clientId 例如:
<h:panelGroup id="listItem">
<h:outputText value="#{component.clientId}" />
</h:panelGroup>
2.使用 p:component() 例如:
<h:panelGroup id="listItem">
<h:outputText value="#{p:component('listItem')}" />
</h:panelGroup>
请注意,此面板组位于数据列表中。现在,两种情况下生成的客户端 ID 是不同的。 (1) 没有值“listItem”附加到客户端 ID,而 (2) 在生成的 clientId 中具有值“listItem”。
此外,使用 (1) 生成的客户端 ID 与生成的 html 组件上的客户端 ID 不同。
任何人都可以对这个问题有所了解,为什么会这样?
最佳答案
隐式 EL 对象 #{component}
指当前组件,在这种情况下
<h:outputText value="#{component.clientId}" />
<h:outputText>
本身!如果您打算打印另一个组件的客户端 ID,则需要通过
binding
将组件实例绑定(bind)到 View 中的唯一变量,以便您可以在同一 View 中的其他任何位置引用它。<h:panelGroup id="listItem" binding="#{listItem}">
<h:outputText value="#{listItem.clientId}" />
</h:panelGroup>
也可以看看:
关于jsf - component.clientId 和 p :component() 生成的客户端 id 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20539713/