Динамический идентификатор составного компонента в JSF

Я создаю ссылку в своем составном компоненте JSF:

<h:link id="menu-abc" outcome="/abc" value="ABC" />

Ссылка находится не в форме. Однако, когда я смотрю на отображаемый HTML-код, в качестве префикса к моему идентификатору появляется динамически сгенерированный идентификатор:

<a id="j_idt33_menu-abg" name="j_idt33_abv" href="abc.xhtml">ABC</a>

Я не могу узнать, откуда берется этот динамический идентификатор. Любые идеи?

ps: мы изменили символ разделителя с: на _


person bertolami    schedule 19.11.2012    source источник


Ответы (1)


Симптомы указывают на то, что на самом деле у вас вообще не пользовательский компонент, а составной компонент, и что вы по какой-то причине изменили символ-разделитель NamingContainer с : на _.

Составные компоненты сами по себе имеют именование контейнеров и добавьте идентификатор всех своих детей к их собственному идентификатору. Простая причина в том, что их можно повторно использовать несколько раз в одном представлении. Если бы собственный идентификатор составного компонента не был добавлен в начале, это привело бы к дублированию идентификаторов в дереве компонентов.

В настоящем пользовательском компоненте у вас будет полный контроль над идентификатором клиента.

Смотрите также:

person BalusC    schedule 19.11.2012
comment
Благодарю. Я изменил вопрос на составной компонент. И я, наконец, обнаружил, что пропустил идентификатор использования составного компонента. - person bertolami; 19.11.2012
comment
Изменение символа-разделителя на _ имеет серьезные последствия. Автоматически сгенерированный идентификатор клиента JSF также использует этот символ. Таким образом, вам абсолютно необходимо дать всем вашим компонентам (по крайней мере тем, на которые вы хотели бы ссылаться в другом месте, например, h: message, f: ajax и т. д.) фиксированный идентификатор без этого символа. В противном случае UIComponent#findComponent() может сильно выйти из строя. Вот связанное и, возможно, поучительное чтение: stackoverflow.com/questions/10726653 - person BalusC; 19.11.2012