Есть ли в JSF 2.0 встроенный метод для поиска идентификатора клиента другого компонента? На SO есть около тысячи вопросов, связанных с идентификаторами клиентов, и есть много хакерских методов для этого, но мне интересно, есть ли в JSF 2.0 более простой метод, о котором я просто не знаю.
#{component.clientId}
оценивает собственный идентификатор клиента данного компонента, но я хочу сослаться на идентификатор другого компонента.
В этом сообщении блога упоминаются component.clientId
и там также говорится, что #{someComponent.clientId}
работает, но, насколько я могу судить, это не так. Я полагаю, он писал это до того, как были выпущены какие-либо эталонные реализации JSF 2.0, поэтому он просто перешел на JSR и, возможно, эта функциональность изменилась. Я не уверен.
Я знаю, что у PrimeFaces и RichFaces есть свои собственные функции для возврата идентификатора клиента, но мне просто интересно, есть ли для этого встроенный метод JSF 2.0. Вот некоторые примеры:
This works to return the outputText's 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
или добавлю / удалю контейнеры за пределами указанных компонентов. Я потратил много времени на отслеживание проблем, вызванных жестко заданными путями идентификаторов.