java - 在 JSF 中并行加载数据
问题描述
我有一个显示表格内容的 JSF/Primefaces 页面。在此表中有一个计时器的结果,该计时器每 15 分钟测试一些相关服务的可访问性。我在表格下方还有一个刷新按钮,可以直接开始测试。某些服务的测试可能需要很长时间,并且页面在测试时不会冻结。
我想知道,是否有可能以所有并行方式异步启动这些测试,并且页面显示服务测试是否仍在运行,或者是否有结果。
我知道这对于一张桌子来说可能很困难,但如果你认为它太复杂了,那么如果有可能表明测试功能仍在运行,那就太好了。
简化代码:
<h:form id="statusfrm">
<div class="card">
<p:dataTable var="sys" value="#{statushandler.availableList}"
showGridlines="true" size="small">
<p:column headerText="System">
<h:outputText value="#{sys.systemName}" />
</p:column>
<p:column headerText="Verfügbarkeit">
<h:outputText value="#{sys.availability}" />
</p:column>
<p:column headerText="Letzte Prüfung">
<h:outputText value="#{sys.lastUpdate}" rendered="#{not sys.requestPending}"/>
<h:outputText value="Pending..." rendered="#{sys.requestPending}"/>
</p:column>
</p:dataTable>
</div>
<p:commandButton value="Neu laden" icon="pi pi-refresh"
actionListener="#{statushandler.refreshParameter}"/>
</h:form>
在状态处理程序中
public String refreshParameter() {
Async: Interface1.checkSystem();
Async: Interface2.checkSystem();
Async: Interface3.checkSystem();
Async: Interface4.checkSystem();
return null;
}
目标是每次用户返回到带有表的页面时,系统都知道某些系统有待处理的请求。
但我也会尝试这个解决方案@Inject @Push
看起来也很有用。
解决方案
推荐阅读
- c# - 为数据行列使用不同的名称,而不是 Classe 中的属性
- python - 根据 Python 中的一组索引将列表拆分为子列表
- alibaba-cloud - 消息:尝试在命令行上运行实例时,用户订单资源类型 [经典] 不存在于 [随机] 中
- vue.js - 数据中的Vue深度克隆道具没有响应
- amazon-web-services - S3 - 从 Post S3 Upload lambda 函数获取元数据
- android - Android NavigationView 只点击小区域
- c++ - 无法将“T&”类型的非常量左值引用绑定到 std::atomic 类型“T”t++ 的右值
- android - 如何使用
与视图绑定? - git - Git命令获取默认分支的最新提交
- html - 为什么我的 div 在悬停时都显示在同一位置?