介绍
当面板包含在 Primefaces 管理的选项卡中时,我遇到了在延迟模式下加载输出面板的问题。
这是一个代码示例:
<p:tabview value="#{b.tabs}" var="tab" dynamic="true" cache="false">
<p:tab title="#{tab.name}">
<p:outputpanel id="reportsDisplayId" >
<p:outputPanel id="reportsPanel" deferred="true" >
<h:outputText id="reports" escape="false" value="#{tab.report}" />
</p:outputPanel>
</p:outputpanel>
</p:tab>
</p:tabView>
“tab.report”由 Jasper 生成。在大多数情况下,生成此报告需要时间。这就是使用延迟模式的原因。
选项卡在动态模式下使用 p:tabView 进行管理,没有缓存,因此每次选项卡更改时都会从服务器重新获取选项卡。
这适用于第一个选项卡:有效地延迟了面板的显示,而不会阻止显示上下文。在选项卡之间切换时,仅当报表准备好时才会显示选项卡的全部内容。
我试过使用 deferredMode="visible",但这个功能似乎是为了滚动可见性。我尝试将 h:form 包含在 ap:outputPanel 中并更新面板而不是表单。
至今没有成功。
使用 p:RemoteCommand
我使用 p:RemoteCommand 取得了进展,发现其他人一直在走这条路,但是遇到了一些困难。我会发布我的进展。
以下是相关帖子:
JSF 2.1 Wildfly 8.2.1.Final Primefaces 8.0.3 Omnifaces 2.7.7 Java 8