Создание уникальных тегов ID в пользовательском интерфейсе: включите ресурс - PullRequest
5 голосов
/ 26 мая 2011

Я создаю страницу, на которой будет несколько экземпляров тега, таких как следующие:

<ui:include id="foo" src="images/something.svg" />

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

Я хочу сделать что-то вроде h: form , где идентификатор тега ui: include добавляется к идентификаторам элементов во включаемом файле.Тогда я мог бы однозначно обратиться ко всему.

Есть ли приемлемый способ "наилучшей практики", чтобы сделать это?

ОБНОВЛЕНИЕ: возможно, я должен дополнить этот вопрос продолжением, которое мне нужносделать это в первую очередь?Моя цель состоит в том, чтобы однозначно обращаться к тегам в каждой из включенных копий документа svg, которых может быть любое число.У меня есть jQuery, так как он в любом случае загружен Primefaces.

Итак, если у меня есть файл JSF, подобный следующему:

<ui:include id="foo" src="images/something.svg" />
<ui:include id="bar" src="images/something.svg" />

И внутри файла Some.svg у меня есть тег

<rect id="blink" ... />

В JavaScript настраница, я хочу иметь возможность получить указатель на foo: мигать или бар: мигать .Я полагаю, я мог бы использовать выражения XPath, но я понял, что они довольно медленные.Я не могу себе представить, что ребята, которые изобрели тег ui: include , не думали о том, как с этим справиться, поэтому я предполагаю, что упустил что-то очевидное.

Ответы [ 2 ]

3 голосов
/ 27 мая 2011

Передайте его как <ui:param>.

<ui:include src="images/something.svg">
    <ui:param name="id" value="foo" />
</ui:include>
<ui:include src="images/something.svg">
    <ui:param name="id" value="bar" />
</ui:include>

Вы можете ссылаться на него по имени параметра #{id} в EL включенного файла.Например,

<rect id="#{id}_blink" ... />
0 голосов
/ 24 апреля 2014

вы можете использовать:

<f:subview id="uniqueXXX">

см. Также этот пример :

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