我们正在使用JSF和Primefaces来控制在Tomcat上运行的Web应用程序中的SparkStream。当我们启动或停止此流时,这需要大约15秒的时间,Web-GUI会继续加载。
现在我们希望使用延迟加载来加载长内容,以确保即使Bean需要一些时间进行响应,Web-GUI仍然可以访问。无论如何,如果我们这样做,我们的p:inputSwitch就不再正常工作了。 每次加载或刷新页面时,Bean中的值都设置为false。
var downloadFile = (oracledb, connectionAttributes, responsem, files) => {
return new Promise((resolve, reject) => {
oracledb.getConnection(connectionAttributes, (error, connection) => {
var completed = false;
if (error) {
reject(response.send(`Cannot establish connection${JSON.stringify(connectionAttributes,undefined,2)}`));
return;
} else if (connection) {
//result will have all the sheets data.
result[sheet1].forEach((element) => {
//code to add all the data to file by reading sheet data.
});
result[sheet2].forEach((element) => {
//code to add all the data to file by reading sheet data.
});
resolve();
}
});
});}
caller function code-> downloadFile().then((resolved) => {
response.download(filePath);
}, (reject) => {
console.log(reject);
});
我们需要将inputSwitch放在延迟的outputPanel中,因为在整个页面完全呈现之前不应该可以访问它(这意味着Stream正在运行或停止,但没有启动或停止atm)。 PrimeFaces版本是6.0。