Как извлечь первый идентификатор компонента из # {cc.clientId}? - PullRequest
2 голосов
/ 12 января 2012

Я хочу получить конкретный идентификатор родительского компонента в составном компоненте. Я только узнал, как получить всю цепочку идентификаторов, а именно, как я написал в заголовке: #{cc.clientId}. Это доставляет (я не знаю, как они называются) Id1:Id2:Id3, но мне нужно только Id1, как мне его получить?

1 Ответ

1 голос
/ 12 января 2012

Вы можете использовать функцию fn:split() для этого:

xmlns:fn="http://java.sun.com/jsp/jstl/functions"
...

#{fn:split(cc.clientId, ':')[0]}

Другой способ - использовать UIComponent#getNamingContainer() на UIComponent#getParent():

#{cc.parent.namingContainer.parent.namingContainer.clientId}

В зависимости от конкретных функциональных требований и имеющегося у вас кода могут быть лучшие способы, которые отсутствуют в вашем вопросе.Например, если Id1 фактически ссылается на <h:form>, тогда вы можете использовать render="@form" вместо <f:ajax>.

Кстати, Id1:Id2:Id3 называется просто идентификатором клиента (как высм. в сгенерированном выводе HTML).Часть Id1 на самом деле является идентификатором компонента (как вы видите в исходном коде JSF).Предварительное добавление NamingContainer идентификаторов в идентификаторе клиента, как в Id1:Id2:Id3, также иногда называют лесным чулком.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...