中对话框中已经显示的消息-6ren"> 中对话框中已经显示的消息-我需要在对话框中显示错误和警告消息。如果对话框未显示,我需要在容器页面中显示消息 我已经在所有 View 中使用 facelets 设置了一个模板:template="/WEB-INF/templat-6ren">
gpt4 book ai didi

jsf - 不要重新显示

中对话框中已经显示的消息

转载 作者:行者123 更新时间:2023-12-01 02:20:51 25 4
gpt4 key购买 nike

我需要在对话框中显示错误和警告消息。如果对话框未显示,我需要在容器页面中显示消息

我已经在所有 View 中使用 facelets 设置了一个模板:template="/WEB-INF/templates/template.xhtml">有了这个内容:

<f:view locale="#{loginBB.localeCode}">
<p:messages autoUpdate="true" closable="true" id="globalMessages" />
<ui:insert name="content" />
</f:view>

在所有对话框中,我都有以下内容:
<p:messages autoUpdate="true" closable="true" id="dialogMessages" />

当对话框显示错误消息时,错误消息会出现在对话框和包含它的 View 中,但我只需要它出现在对话框中。

我做错了什么?我不知道该怎么办

编辑:根据 BalusC 的回答,我做了以下操作:

模板:
<f:view locale="#{loginBB.localeCode}">
<ui:insert name="dialogs" />
<p:messages autoUpdate="true" closable="true" redisplay="false" />
<ui:insert name="content" />
</f:view>

查看:
<ui:define name="content">
...
</ui:define>

<ui:define name="dialogs">
<h:form id="formX">
<p:dialog ... >
</p:dialog>
</h:form>
</ui:define>

当对话框打开时,它会在对话框中显示消息。还行吧。但是当对话框关闭时,它不会在主页中显示消息

最佳答案

如果两者都是 <p:messages>,那就很棘手了。组件有一个 autoUpdate="true" .如果只有页面的 <p:messages> 是可行的是自动更新的。如果可以确保页面的<p:messages>在对话框的 <p:messages> 之后出现在 JSF 组件树中,那么就是设置 redisplay 的问题了页面属性<p:messages>false并确保对话框的每个操作都更新了对话框自己的表单,其中包含 <p:messages> .

<p:dialog>
<h:form>
<p:messages />
...
<p:commandButton ... update="@form" />
</h:form>
</p:dialog>
<p:messages autoUpdate="true" redisplay="false" />

不需要额外的 JS。您可能只需要更改您的模板以获得 <ui:define name="dialogs">页面上方 <p:messages>这样你所有的对话都会在那里结束。或者,或者,使用 CSS 来定位页面的 <p:messages>绝对地。或者,也许,使用 JS 重新定位页面的 <p:messages>到您希望在 HTML DOM 中使用它的地方。

关于jsf - 不要重新显示 <p :messages autoUpdate ="true"> 中对话框中已经显示的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20643367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com