我有一个(JSF 2.0 / Primefaces 2.2RC-SNAPSHOT)应用程序
<p:layout>
我在我的应用程序中使用了很多对话框,在最新版本的primefaces出现之前,没有办法在布局顶部显示带有模态的对话框而不将对话框放在标签之外。
所以我就这样做了。我现在遇到的问题是我注意到在加载应用程序时正在调用构造函数和postcontructs。这是因为正在加载带有布局的视图,因此正在加载我的所有对话框。
在我实际处理应用程序中的相应视图之前,我不希望调用这些构造函数。
我一直在测试
上的appendToBody属性 <p:dialog>
标签,但它似乎真的很多。在视图的初始渲染中,一切正常。我可以打开一个对话框关闭它等它工作正常。如果我导航到另一个视图,然后回到初始视图并打开对话框,一切都在页面上运行。对话框窗口位于正确的位置,但内容不是。
我的问题是1.有没有办法让我的布局之外的对话窗口成为
的孩子 <h:body>
在应用程序加载时没有启动与它们关联的所有托管bean构造函数?
或者有人知道在使用appendToBody标签时如何解决对齐问题?感谢。
答案 0 :(得分:7)
使用布局和对话框时,我通常将对话框放在布局之外作为body元素的直接子元素。我有一个特殊的ui:在我的页面模板中插入部分。
添加了appendToBody以使其更容易,如果它不适合您,请尝试这种方法。我知道模态对话框和布局可以这样工作。
答案 1 :(得分:2)
没有与它们关联的所有托管bean构造函数 在应用程序加载时启动
在渲染对话框时,可能会加载managedbean。
尝试仅在按钮单击后呈现对话框,可能在对话框上输入rendered="#{mybean.flagLoadMyDialog}"
,并在使用ajax单击按钮时设置flagLoadMyDialog。
还要记住在点击按钮后更新对话框。