我们有一个复杂的 Web 应用程序,通常通过 RedHat JBoss EAP 7.4 提供服务,我们尝试将其与 Wildfly 26.1.3 一起使用(最后一个在 javax → jakarta 之前)。对于 UI,我们使用 Primefaces 13.0.8(最新)。
一个相当简单的用户界面,带有选项卡视图和一些动态内容失败与Wildfly,我仍在寻找解决方案。相同的 UI 适用于我们的 EAP 安装。
这是精简版:
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:p="http://primefaces.org/ui"
template="/WEB-INF/templates/minimal.xhtml">
<ui:define name="body">
<h:form>
<p:tabView dynamic="true" cache="false">
<p:tab title="Tab 1">
<h:inputText>
<p:ajax event="keyup" update="time" />
</h:inputText>
<h:outputText value="#{developer.timestamp}" id="time" />
</p:tab>
<p:tab title="Tab 2">
Content
</p:tab>
</p:tabView>
</h:form>
</ui:define>
</ui:composition>
相关部分是
<p:tabView dynamic="true" cache="false">
,我们在整个 UI 中使用它,以允许复杂的选项卡视图在需要时快速呈现,而不是更早。
在上面的示例中,到目前为止,UI 无法与 Wildfly 一起工作(更新)。但是,如果我只是从
dynamic="true"
更改为 dynamic="false"
,它就会开始工作。
这是一个小 GIF,展示了如果我输入一些数据将会发生什么。 右侧的时间戳应该更新。 使用
dynamic="true"
不起作用。
我错过了什么?我不知道...
这似乎与部分状态保存有关。请参阅 https://github.com/da3x/PARTIAL_STATE_SAVING 了解可重现的最小示例。
好吧,这是 Mojarra 的 bug。当我从 Wildfly 切换到独立 Jetty 时,我可以使用 Mojarra 2.3.17 重现该问题,但已在 2.3.18+ 中修复。
因此,如果您可以将 Wildfly Mojarra JAR 更换到最新的 2.3.21,则应该可以修复该问题。