我正在使用 PF v.5.3.5 和 JSF v.2.2.8。这是 SO 中的一个常见话题。我注意到 PF v.5.3.5 文档中有一个与 appendTo 属性相关的错误。
第一种方法
渲染 p:confirmDialog 并渲染命令按钮,但如果将消息放置在嵌套的 h:form 内,则操作不起作用并且不会渲染消息。
第二种方法
如果我将此对话框放在主 h:form 之外,那么如果我添加 global="true" 属性,它也根本不会呈现。
第三种方法
渲染 p:confirmDialog 并渲染命令按钮,但如果删除了嵌套的 h:form,则操作不起作用并渲染消息。
<h:form>
...
<p:confirmDialog id="askSessionDialog1" widgetVar="askSessionDialog1" severity="alert"
appendTo="@(body)" rendered="#{treeData.askSessionDialogRendered}" visible="#{treeData.askSessionDialogRendered}">
<h:form>
<f:facet name="message">
<h:outputText value="#{msg.WEB_ADMIN_PAGES_TREESEGMENT_NOSESSION}" escape="false"/>
</f:facet>
<p:commandButton value="#{msg.WEB_BUTTONS_OK}" action="#{treeData.save(false, true)}" icon="fa fa-check"
update="@(form)" type="button" />
<p:commandButton value="#{msg.WEB_BUTTONS_CANCEL}" action="#{treeData.setAskSessionDialogRendered(false)}"
icon="fa fa-close" onclick="PF('askSessionDialog1.hide()')" update="@(form)" type="reset" />
</h:form>
</p:confirmDialog>
...
</h:form>
后端部分
setAskSessionDialogRendered(true);
RequestContext.getCurrentInstance().update("treeSegmentForm askSessionDialog askTurnOffDialog askSessionDialog1 askTurnOffDialog1");
提前感谢建设性的帖子和评论。