Вызов действия Stateful bean, возвращающего идентификатор представления JSF в цикле для рендеринга PDF-файлов

Есть ли способ вызвать действие Stateful Bean, которое отображает PDF с использованием JSF более одного раза (в цикле)? Я попытался сделать это с помощью Javascript, где я вызываю событие.click() для каждой кнопки, которую я создал для каждого задания PDF, которое я хотел бы отобразить. XHTML выглядит следующим образом:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:s="http://jboss.com/products/seam/taglib"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:a="http://richfaces.org/a4j"
    xmlns:c="http://java.sun.com/jstl/core"
    xmlns:rich="http://richfaces.org/rich">

<ui:composition>    
    <div id="dataSizingDivGrowth">
            <f:subview id="fbiAdminId" rendered="#{user.FBIAdmin}">
                <h:inputHidden value="#{pdfPrinter.emailsSize}" id="emailSizeId"/>
                <h:inputHidden value="#{pdfPrinter.downloadIds}" id="downloadIds"/>             
                <br />
                <table>
                    <tr>
                        <td colspan="4" align="center">
                            <button type="button" onclick="savePDF();">Send Emails</button>
                            <c:forEach items="#{pdfPrinter.downloadIdsArr}" var="value">                                
                                <h:form id="emailAutoForm-#{value}" target="_blank">
                                    <h:inputHidden value="#{pdfPrinter.currDownloadId}" id="currDownloadId-#{value}"/>
                                    <h:commandButton action="#{pdfPrinter.emailAutoCD()}" id="savePDFId-#{value}" style="display:none"/>
                                </h:form>
                            </c:forEach>                                                                                                                                
                        </td>
                    </tr>
                </table>
            </f:subview>            

    </div>
    <script type="text/javascript">     
        function savePDF() {
            //alert("start saving pdf");
            var emailSize = document.getElementById("emailAuto:fbiAdminId:emailSizeId").value;
            alert("before downloadIdsArr " + emailSize);
            var downloadIds = document.getElementById("emailAuto:fbiAdminId:downloadIds").value;
            var downloadIdsArr = downloadIds.split("?");
            //alert("before getting length");
            //alert(downloadIds);
            //alert(downloadIdsArr.length);
            //alert(downloadIdsArr[0]);

            for ( var i = 0; i &lt; emailSize; i++ ) {
                var j = function(x) {
                    document.getElementById("emailAuto:fbiAdminId:emailAutoForm-" + downloadIdsArr[x] + ":currDownloadId-" + downloadIdsArr[x]).value = downloadIdsArr[x];                              
                    document.getElementById("emailAuto:fbiAdminId:emailAutoForm-" + downloadIdsArr[x] + ":savePDFId-" + downloadIdsArr[x]).click();                 
                }
            j(i);
            }
        }
    </script>
</ui:composition>
</html>

Что происходит, так это то, что цикл javascript вызывает только последнюю итерацию, выполняет ее и игнорирует все, что раньше. Любая помощь будет оценена.

0 ответов

Другие вопросы по тегам