modal=true 的 Primefaces 对话框无法正常工作

Posted

技术标签:

【中文标题】modal=true 的 Primefaces 对话框无法正常工作【英文标题】:Primefaces dialog with modal=true not working properly 【发布时间】:2011-09-18 14:53:00 【问题描述】:

我无法获得具有属性modal=true 的 (primefaces)dialog 框。它在 modal=false 下正常工作,但是当我尝试设置 modal=true 时,甚至对话框覆盖都变为非活动状态。

我怎样才能让它正常工作?

【问题讨论】:

这不是很多信息,您是否尝试设置属性appendToBody=true?尝试发布您的代码。 感谢设置 appendToBody="true" 后现在可以使用! 有没有更简单的方法来控制覆盖部分的不透明度?您可以考虑将其发布为答案,以便我接受。 查看***.com/questions/18607921/… 【参考方案1】:

使用 Primefaces 5 appendTo="@(body)" 为我解决了这个问题。

【讨论】:

我在使用 RequestContext#execute("PF('widgetvar').hide()") 时遇到问题,我的对话框按预期隐藏,但半透明覆盖不会。代码在 PF 5.1 中运行良好,但在 5.2/5.3 中中断。该解决方案使事情再次正常运行(肯定错过了文档中的某些内容......)。 我确信这会起作用,但是在我的情况下,我的对话框在一个表单内(并且我在对话框内有表单字段),所以我无法将对话框移到正文,无需重新安排我的整个 xhml。将继续寻找解决方案,已从 PF 4 升级到 PF 5.3【参考方案2】:

appendToBody=true 会导致与嵌套表单相关的问题 - 在对话框中输入的输入文本值被忽略,并且在对话框获得自己的非嵌套表单之前,ajax 请求不会通过。即使没有 modal=true,appentToBody=true 也会导致这种行为。

【讨论】:

有趣的是,5 或 6 年后仍然如此。你会认为他们现在已经找到了解决办法。【参考方案3】:

在我将 p:dialog 移动到单独的 h:form 之前,我也一直在与奇怪的行为作斗争,此时对话框中的数据与 dataTable 中的行匹配,但覆盖并没有隐藏。

appendToBody=true 解决了覆盖问题。我仍然需要测试带有输入和操作的对话框。

【讨论】:

【参考方案4】:

根据对话框部分的 Primefaces Guide 2.2:

appendToBody FALSE Boolean 将对话框追加为文档正文的子项。

当使用 Primefaces 对话框时,使用 appendToBody 属性来启用对话框覆盖。 Primefaces 对话框基于 YUI 对话框组件,该组件对模态对话框覆盖有类似的问题。

操作对话框覆盖将涉及覆盖覆盖的 CSS 类并指定您自己的不透明度。

【讨论】:

以上是关于modal=true 的 Primefaces 对话框无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

PrimeFaces p:tree使用自定义图标

PrimeFaces 3.0 - <p:dataTable> 标题不与使用 scrollable="true" 对齐

使用o:form进行排序时删除了PrimeFaces数据表过滤includeRequestParams =“true”[重复]

从 Managed Bean 函数调用 Primefaces 对话框

Primefaces确认对话框不更新数据表

Primefaces:fileUpload显示Facesmessage无法正常工作