JSF 2.0 是否有用于查找另一个组件的客户端 ID 的内置方法?SO上有大约一千个与客户端ID相关的问题,并且有很多hackish方法可以做到这一点,但我想知道JSF 2.0是否带来了一种我不知道的更简单的方法。
#{component.clientId}
评估为给定组件自己的客户端 ID,但我想引用另一个组件的 ID。
这篇博文提到component.clientId
,它也说#{someComponent.clientId}
有效,但据我所知,它没有。我相信他是在 JSF 2.0 的任何参考实现出现之前写的,所以他只是通过 JSR,也许功能发生了变化。我不知道。
我知道 PrimeFaces 和 RichFaces 都有自己的函数来返回客户端 ID,但我只是想知道是否有内置的 JSF 2.0 方法来解决这个问题。这里有些例子:
这可以返回 outputText 的 ID。
`<h:outputText value="My client ID : #{component.clientId}" />`
根据上面的博客文章,这应该有效,但事实并非如此。我只是没有输出。
`<h:button id="sampleButton" value="Sample" />`
`<h:outputText value="sampleButton's client ID : #{sampleButton.clientId}" />`
这适用于 PrimeFaces:
`<h:outputText value="PrimeFaces : sampleButton's client ID : #{p:component('sampleButton')}" />`
在 RichFaces 中工作:
`<h:outputText value="RichFaces : sampleButton's client ID : #{rich:clientId('sampleButton')}" />`
此外,如果可能的话,我正在寻找在更改javax.faces.SEPARATOR_CHAR
值或在引用组件之外添加/删除容器时不会中断的解决方案。我花了很多时间来追踪由硬编码 ID 路径引起的问题。