【发布时间】:2019-05-27 15:12:54
【问题描述】:
我对 p:message 标签有一个奇怪的问题。在页面 a 上有一个 dataTable ,其中包含我的数据库中的数据,我可以在 p:dialog 中对其进行编辑。一旦所有验证成功并且数据库中的更新完成后,我刷新数据表并添加面部消息信息以显示操作的成功。在前端,我更新了包含数据表和对话框的表单。我的问题是消息显示但几乎立即消失。就像消息标签随表单更新一样。我不明白。
我试图将消息标签移入和移出表单,但没有改变任何内容。 我试图调整 remoteCommand 以仅更新 dataTable 和对话框,但它没有用。
<p:messages autoUpdate="true" showDetail="true" severity="info,error" />
<h:form id="form">
<p:dataTable
style="width: 80%; margin-left: auto; margin-right: auto; text-align:center"
var="achievement" value="#{achievementBean.listAchievement}">
...
</p:dataTable>
<p:dialog header="#{i18n['achievement']}" widgetVar="dlg"
dynamic="true" closable="false" resizable="false" showEffect="fade"
hideEffect="fade">
<h:panelGroup id="achievementDetail">
<p:messages autoUpdate="true" severity="warn" />
...
<h:panelGrid columns="2" style="width: 100%; text-align:center">
<p:commandButton value="#{i18n['general.submit']}"
icon="fa fa-check"
actionListener="#{achievementBean.submitAchievement}"
oncomplete="if(!args.validationFailed){updateForm();}" />
<p:commandButton value="#{i18n['general.cancel']}"
icon="fa fa-close" action="#{achievementBean.submitCancel}"
oncomplete="PF('dlg').hide();" update="@form" process="@this" />
</h:panelGrid>
<p:remoteCommand name="updateForm" update="@form" />
</h:panelGroup>
</p:dialog>
</h:form>
【问题讨论】:
-
我很确定这是因为您的消息中有 auto update=“true”。如果你用 F12 观察网络流量,你会看到它
-
正如 OP 在从他/她的代码中越来越多地创建 minimal reproducible example 时会发现的那样,并且在 emd 中注意到删除您提到的内容使其工作。再次,minimal reproducible example 到救援队
标签: jsf primefaces