Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jsf 通过<;使用PrimeFaces启动对话框;p:dialog>;及<;用户界面:包括>;_Jsf_Jsf 2_Primefaces - Fatal编程技术网

Jsf 通过<;使用PrimeFaces启动对话框;p:dialog>;及<;用户界面:包括>;

Jsf 通过<;使用PrimeFaces启动对话框;p:dialog>;及<;用户界面:包括>;,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我正在为我的web UI项目使用PrimeFaces UI库 我有一个带有按钮的manage\u watchfolder.xhtml页面,该按钮启动一个对话框: <p:commandButton value="Add" oncomplete="dlgEditWF.show()" update=":editWFForm" process="@none"/> 问题是我不希望在单击按钮之前加载edit_watchfolder.xhtml。但是,edit\u watchfold

我正在为我的web UI项目使用PrimeFaces UI库

我有一个带有按钮的
manage\u watchfolder.xhtml
页面,该按钮启动一个对话框:

<p:commandButton value="Add" oncomplete="dlgEditWF.show()"
    update=":editWFForm" process="@none"/>  
问题是我不希望在单击按钮之前加载
edit_watchfolder.xhtml
。但是,
edit\u watchfolder.xhtml
在创建
manage\u watchfolder.xhtml
的同时被“加载”。因此,从
edit\u watchfolder.xhtml
调用的所有bean都会被创建、初始化等,甚至用户可能永远不会真正点击按钮。这会产生大量开销,并使执行速度变慢

我可以避免这种情况吗?

这是“出于设计”,原因如下:

在您的特定情况下,最好的办法是在默认情况下不初始化bean,而是在命令按钮的操作方法期间执行初始化

<p:commandButton value="Add" action="#{bean.initDialog}" 
    process="@this" update=":editWFForm" oncomplete="dlgEditWF.show()" />

您可以使用
p:dialog
的“动态”属性。看看这些素面



您可以在BalusC的回答中找到解决方案,但我的“父”页面和弹出对话框使用相同的bean:-(如果仅通过操作方法调用对话框的初始化,我不确定这会如何形成问题。因为我的父页面需要初始化bean。我的弹出页面需要未初始化的bean。如果我将初始化从constructor移动到initDialog(),那么我的父页将如何初始化bean?只需在bean(post)构造函数中初始化父页和在action方法中初始化对话框?它们不需要在同一个方法中进行。问题是,当dialog创建bean时,它将进行父页初始化。在这种情况下,我不能跳过父页初始化(如你所说的后期构造),我可以吗?@BalusC现在有不同的问题:我第一次启动对话框时,会创建两次支持bean。在我关闭对话框并再次启动后,它只创建一次bean,然后继续创建一次,然后正常工作。所以唯一的问题是第一次启动。为什么第一次会创建两次bean?
<p:commandButton value="Add" action="#{bean.initDialog}" 
    process="@this" update=":editWFForm" oncomplete="dlgEditWF.show()" />
<p:commandButton id="basic" value="Show Dialog" onclick="dlg.show();" type="button" />  

<p:dialog id="dialog" header="Dynamic Dialog" widgetVar="dlg" dynamic="true">  
    <h:outputText value="This content is loaded lazy." />  
</p:dialog>