我如何将ID设置为c:foreach的ID h:commandlink,以便由JS加速



在带有apache trinidad的JSF 1.1的项目中,我需要创建多个动态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>

问题是,当我使用c:foreach创建命令链接时,使用动态ID在中根据tld或tag文件中的属性指令在中结束时,属性" [id]"不接受任何表达式

c:foreach或ui:重复创建具有不同参数的几个命令链接的其他解决方案意味着没有和ID,但是我需要ID,因为JS没有其他方法可以访问这些对象。

您可以改用CSS类选择器:

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

并获取每个按钮:

document.getElementsByClassName("buttonCard_"+i)

最新更新