In a for loop I'm iterating through an array of File objects and I need to invoke remote command for every file with it's b64 value passed as parameter.
HTML:
Code: Select all
<p:remoteCommand name="convertToPdfa" actionListener="#{bean.convertFile}" />
Code: Select all
public String convertFile() {
String index = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("index"); // not empty
String data = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("data"); // not empty
String retry = Boolean.parseBoolean(FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("retry")); // empty
return "";
}
Code: Select all
convertAll: async function (noOfFiles) {
for (let i = 0; i < noOfFiles; i++) {
await sendFileDataAndConvert(i);
}
},
sendFileDataAndConvert: async function (index) {
let promise = new Promise((resolve, reject) => {
const reader = new FileReader();
reader.readAsDataURL(getFile(index));
reader.onload = () => resolve(reader.result);
reader.onerror = error => reject(error);
});
// wait until the promise returns us a value
let result = await promise;
// "Now it's done!"
console.log(result); // result is not empty, file is converted
convertToPdfa([{name: 'index', value: index}, {name: 'data', result}, {name: 'retry', value: false}]);
}
Thank you for answers.