Несколько способов.
Если функция JS generateSparkLine()
находится под вашим контролем, и вы на самом деле используете id
, чтобы получить элемент из документа по ID, тогдапросто избавьтесь от атрибута id
и замените онклик на
onclick="Reports_Cap.generateSparkLine(this, 'generateSparkLine')"
Таким образом, вам не нужен идентификатор.У вас уже есть элемент в качестве 1-го аргумента в функции.
или , если он не находится под вашим контролем и / или вы не используете его для получения элемента по идентификатору и вы используете Facelets 2.x, затем введите счетчик циклов по атрибуту varStatus
, равный <ui:repeat>
, и добавьте к нему значения ID.
<div>
<ui:repeat var="deviceSel" value="#{reportViewproto.selectedDevices}" varStatus="loop">
<h:outputText value="#{deviceSel}" />
<div id="chartDiv_#{loop.index}" style="width:600px; height:400px;" onclick="Reports_Cap.generateSparkLine('chartDiv_#{loop.index}', 'generateSparkLine')"></div>
<br />
</ui:repeat>
</div>
Если вывсе еще на Facelets 1.x, ваша лучшая ставка - JSTL <c:forEach>
, который также поддерживает атрибут varStatus
таким же образом, с той лишь разницей, что он работает во время построения представления, а не во время визуализации представления, и, таким образом, вы не будетеуметь использовать его в другом UIData
компоненте.