Есть ли в JSF 2.0 встроенный метод для поиска идентификатора клиента другого компонента? На SO есть около тысячи вопросов, связанных с идентификатором клиента, и есть много хакерских методов для этого, но мне интересно, предоставил ли JSF 2.0 более простой метод, который я просто не знаю.
#{component.clientId}
оценивает данный идентификатор клиента собственного компонента, но я хочу ссылаться на другой идентификатор компонента.
В этом сообщении в блоге упоминается component.clientId
, а также говорится, что #{someComponent.clientId}
работает, но из того, что я могу сказать, это не так. Я считаю, что он написал, что до того, как были выпущены какие-либо ссылочные версии JSF 2.0, он просто шел по JSR и, возможно, эта функциональность изменилась. Я не уверен.
Я знаю, что PrimeFaces и RichFaces имеют свои собственные функции для возврата идентификатора клиента, но мне просто интересно, есть ли для этого встроенный метод JSF 2.0. Вот несколько примеров:
Это работает для возврата идентификатора outputText.
`<h:outputText value="My client ID : #{component.clientId}" />`
Согласно сообщению выше, это должно работать, но это не так. Я просто не получаю выход.
`<h:button id="sampleButton" value="Sample" />`
`<h:outputText value="sampleButton client ID : #{sampleButton.clientId}" />`
Это работает в PrimeFaces:
`<h:outputText value="PrimeFaces : sampleButton client ID : #{p:component('sampleButton')}" />`
Работает в RichFaces:
`<h:outputText value="RichFaces : sampleButton client ID : #{rich:clientId('sampleButton')}" />`
Кроме того, если это вообще возможно, я ищу решения, которые не будут прерываться, если я изменю значение javax.faces.SEPARATOR_CHAR
или добавлю/удалю контейнеры вне ссылочных компонентов. Я потратил много времени на устранение проблем, вызванных жестко закодированными идентификационными путями.