Как я могу установить идентификатор для id h: commandLink из c: forEach, чтобы получить доступ к JS?

В проекте с JSF 1.1 с Apache Trinidad мне нужно создать несколько динамических h:commandLink, и к ним нужно получить доступ с помощью JS, чтобы их можно было щелкнуть при загрузке.

У меня есть это для js:

    var cardsSize = window.document.getElementById("miForm:cardsSize").value;
    for(var i = 0; i <= cardsSize; i++){    
        setTimeout(function(){
            var buttonCard = window.document.getElementById("miForm:buttonCard_"+i);
            buttonCard.click();
        }, 1000);
    }

И что у меня есть в .jsp:

<c:forEach var = "i" begin="0" varStatus="index" end="#{pageFlowScope.cardsSize}">
    <h:commandLink id="buttonCard_#{index.index}"
        style="display:none" 
        action="#{confirmBacking.generateDocument}"
        onclick="document.forms['miForm'].target='_blank';">
            <f:setPropertyActionListener target="#{confirmBacking.indexCard}" value="#{index}" />
    </h:commandLink>
</c:forEach>

Проблема в том, что когда я создаю commandLink с помощью c:forEach, используя динамический идентификатор, оканчивающийся на Согласно директиве TLD или атрибута в файле тега, атрибут «[id]» не принимает никаких выражений

Другие решения для c:forEach или ui:repeat для создания нескольких commandLink с разными параметрами подразумевают отсутствие и идентификатор, но мне нужны идентификаторы, поскольку, насколько мне известно, у JS нет другого способа доступа к этим объектам.


person Natalia Gutiérrez    schedule 26.09.2017    source источник
comment
если вы используете ui:repeat, вы автоматически получите идентификатор с постфиксным индексом...   -  person Kukeltje    schedule 27.09.2017
comment
как я могу узнать этот идентификатор, чтобы получить к нему доступ из javascript?   -  person Natalia Gutiérrez    schedule 27.09.2017
comment
Думайте обо всем этом как о html... Как вы можете прочитать атрибут html-элемента в javascript? Очень общий и «доступный для Google» вопрос   -  person Kukeltje    schedule 27.09.2017
comment
не могли бы вы опубликовать пример с использованием ui:repeat и установкой этого идентификатора с постфиксным значением?   -  person Natalia Gutiérrez    schedule 27.09.2017
comment
В любом случае, ui:repeat для меня не вариант, так как в стеке проекта есть JSP, а не Facelets, но мне все еще интересно увидеть решение с ui:repeat   -  person Natalia Gutiérrez    schedule 27.09.2017
comment
Тогда в следующий раз заявите об этом немного раньше... это важная часть задач (используя старую комбинацию)   -  person Kukeltje    schedule 27.09.2017


Ответы (1)


Вместо этого вы можете использовать селектор класса css:

<h:commandLink styleClass="buttonCard_#{index.index}"

и получить каждую кнопку:

document.getElementsByClassName("buttonCard_"+i)
person C.P.O    schedule 26.09.2017
comment
Возможно, это было бесполезно для меня, поскольку конечный тег c: forEach не принимал выражение EL, это было допустимое решение. - person Natalia Gutiérrez; 27.09.2017