【问题标题】:Modal ConfirmDialog over modal Dialog -> everything is blockedModal ConfirmDialog over modal Dialog -> 一切都被阻止
【发布时间】:2012-02-16 17:55:01
【问题描述】:

我有一个模态 ConfirmDialog,它显示在使用 PrimeFaces 3.0.1 的模态对话框上。 如果 ConfirmDialog 被打开,整个页面将被锁定,包括 ConfirmDialog 本身... rien ne va plus

我发现 Primefaces 的 Bugreport 听起来与 http://code.google.com/p/primefaces/issues/detail?id=576 相似,但由于该错误与布局组件有关,因此在我的情况下并不适用。

有什么解决方法吗?

谢谢!!!

【问题讨论】:

标签: java jsf primefaces


【解决方案1】:

使用p:dialog 标签的appendToBody="true" 属性来解决这个问题。

从 PrimeFaces 5 开始,该属性发生了变化。如果您使用 5+,请改用 appendTo="@(body)",请参阅迁移指南:migration guide

(了解您的 Primefaces 版本会很有帮助)

【讨论】:

  • 谢谢!将 appendToBody="true" 添加到 p:confirmDialog 是我的解决方案!
  • 这 (appendToBody="true") 也解决了我的 (PrimeFaces 3.2) 应用程序中的问题,对于仅生成 AJAX 请求的确认对话框和刷新整个页面的确认对话框。
  • @daVe:PrimeFaces 5 中的属性不同,请参阅迁移指南:code.google.com/p/primefaces/wiki/MigrationGuide。简而言之:在 PrimeFaces 5 中使用 appendTo="@(body)"
【解决方案2】:

在对我有用的标签中使用 appendTo="@(body)"

【讨论】:

  • appendToBody="true" 对我不起作用。但它工作正常。谢谢
【解决方案3】:

由于我需要对话框中的提交按钮,不幸的是我不得不搜索不同的解决方案,然后 appendToBody="true"。对于遇到同样问题的每个人,这里都有解决方案:

如果你想要以下:

<p:dialog modal="true">
    <h:form>
        ...
        <p:confirmDialog>
            <p:commandButton action="#{transportBean.execute}" type="submit" .../>
        </p:confirmDialog>
        ...
    </h:form>
</p:dialog

这将导致一个完全被阻止的页面。将表单元素拉高两个元素,它将起作用:

<h:form>
    <p:dialog modal="true">        
        ...
        <p:confirmDialog>
            <p:commandButton action="#{transportBean.execute}" type="submit" .../>
        </p:confirmDialog>
        ...        
    </p:dialog
</h:form>

【讨论】:

    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-29
    相关资源
    最近更新 更多