2011-02-08 28 views
4

我有一个(JSF 2.0/Primefaces 2.2RC-快照)的应用程序,具有Primefaces - 通过对话和布局

<p:layout> 

我在应用程序中使用了大量对话和前primefaces的最新版本出来没有办法在布局顶部显示带有模式的对话框,而无需将对话框放在标签之外。

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

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

我一直在测试的

<p:dialog> 

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

我的问题是1。是否有办法我可以有我的布局之外对话窗口为一体的

<h:body> 

,而不必所有与之相关的管理bean的构造函数孩子发起的应用程序加载时?

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

回答

7

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

appendToBody是为了使这更容易,如果它不适合你,请尝试这种方法。我知道模态对话框和布局可以这样工作。

+0

感谢您的回复。我的对话框在我的布局之外作为身体的直接子对象,但我的问题是所有这些对话框都与不同的托管bean关联。当它是身体的直接子对象时,这些bean的所有构造函数都会被调用,因为正在创建对话框。我如何解决这个问题?通过使用? – medium 2011-02-08 14:21:51

2

,而不必所有与之相关的管理bean的构造函数时,应用程序加载

也许当你呈现对话框中managedbean被载入 启动。

尝试仅在点击按钮之后渲染对话框,可能在对话框上输入rendered="#{mybean.flagLoadMyDialog}",然后在使用ajax单击按钮时设置flagLoadMyDialog。

还记得按钮点击后,ajax更新对话框。