【问题标题】:Primefaces - using dialogs and layoutsPrimefaces - 使用对话框和布局
【发布时间】:2011-02-08 14:08:09
【问题描述】:

我有一个 (JSF 2.0/Primefaces 2.2RC-SNAPSHOT) 应用程序,它有

 <p:layout> 

我在我的应用程序中使用了很多对话框,在最新版本的 primefaces 出现之前,如果不将对话框放在标签之外,就无法在布局顶部显示带有模态的对话框。

所以我就这么做了。我现在遇到的问题是我注意到在我的应用程序加载时正在调用构造函数和 postconstructs。这是因为正在加载带有布局的视图,因此正在加载我的所有对话框。

在我实际处理应用程序中的适当视图之前,我不希望调用这些构造函数。

我一直在测试appendToBody属性

 <p:dialog> 

标签,但它似乎真的有问题。在视图的初始渲染中一切正常。我可以打开一个对话框关闭它等,它工作正常。如果我导航到另一个视图,然后返回初始视图并打开对话框,那么一切都在页面外运行。对话窗口在正确的位置,但内容不正确。

我的问题是 1. 有没有办法让我的布局之外的对话框窗口作为

 <h:body>

没有在应用程序加载时启动所有与之关联的托管 bean 构造函数?

或者有谁知道在使用 appendToBody 标签时如何解决对齐问题?谢谢。

【问题讨论】:

    标签: primefaces


    【解决方案1】:

    当使用布局和对话框时,我通常将我的对话框作为 body 元素的直接子元素放置在布局之外。为此,我的页面模板中有一个特殊的 ui:insert 部分。

    添加了appendToBody 来简化此操作,如果它不适合您,请尝试此方法。我知道模态对话框和布局可以这样工作。

    【讨论】:

    • 感谢您的回复。我确实有我的布局之外的对话框作为正文的直接子级,但我的问题是所有这些对话框都与不同的托管 bean 相关联。当它是主体的直接子对象时,将调用这些 bean 的所有构造函数,因为正在创建对话框。我该如何解决这个问题?通过使用 ?
    【解决方案2】:

    没有与它们关联的所有托管 bean 构造函数 在应用程序加载时启动

    也许当你的对话框被渲染时 managedbean 被加载了。

    尝试仅在单击按钮后呈现对话框,可能通过在对话框上输入rendered="#{mybean.flagLoadMyDialog}",并在单击按钮时使用 ajax 设置 flagLoadMyDialog。

    还记得在单击按钮后对对话框进行 ajax 更新。

    【讨论】:

      猜你喜欢
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-22
      • 1970-01-01
      • 1970-01-01
      • 2018-01-09
      相关资源
      最近更新 更多