2012-01-12 7 views
2

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

ответ

1

Вы можете использовать the fn:split() function для этого:

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" вместо .

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