0

我正在使用 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");

提前感谢建设性的帖子和评论。

4

1 回答 1

0

解决 了这是现在最适合我的方法。

<h:form>
...
<p:confirmDialog id="askSessionDialog" widgetVar="askSessionDialog" severity="alert"
                                 appendTo="@(body)" rendered="#{treeData.askSessionDialogRendered}" visible="#{treeData.askSessionDialogRendered}">
                    <f:facet name="message">
                        <h:outputText value="#{msg.WEB_ADMIN_PAGES_TREESEGMENT_NOSESSION}" escape="false"/>
                    </f:facet>

                    <h:form>
                        <p:commandButton value="#{msg.WEB_BUTTONS_OK}" icon="fa fa-check" type="button" accesskey="o">
                            <p:ajax event="click" listener="#{treeData.save(false, true)}" oncomplete="PF('askSessionDialog').hide()"
                                    update="@(form)" />
                        </p:commandButton>
                        <p:commandButton value="#{msg.WEB_BUTTONS_CANCEL}" icon="fa fa-close" type="reset" accesskey="c">
                            <p:ajax event="click" listener="#{treeData.setAskSessionDialogRendered(false)}"
                                    onsuccess="PF('askSessionDialog').hide()" update="@(form)" />
                        </p:commandButton>
                    </h:form>
                </p:confirmDialog>
...
</h:form>

后端

setAskSessionDialogRendered(true);
RequestContext.getCurrentInstance().update("treeSegmentForm");

空间感谢:@YagamiLight 他帮助我启动了我的解决方案。

于 2016-07-28T10:19:37.263 回答