Вызов действия 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 < 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 вызывает только последнюю итерацию, выполняет ее и игнорирует все, что раньше. Любая помощь будет оценена.