我有一个Primefaces项目,在这个项目中,我试图复制桌面应用程序的行为。由于桌面应用程序的性质,有相当多的弹出对话框,导致页面的处理变得非常慢(初始页面加载:10-20秒,AJAX请求:6-10秒)。
我已经为所有对话框提供了单独的文件,并且我希望使用备份bean将它们弹出为对话框,而不必在我的主文件中使用<ui:include>。有办法这样做吗?
例如:
<p:commandButton id="showSearchDialog"
action="#{managedBean.showSearchDialog()}"/>
<p:dialog widgetVar="searchDialog">
</p:dialog>public class ManagedBean {
public void showSearchDialog() {
//Some sort of function that knows to process the contents of searchDialog.xhtml
// and insert it into the relevant <p:dialog>
RequestContext.getCurrentInstance().execute("PF('searchDialog').show()");
}
}发布于 2014-09-16 18:07:50
如果您的目标是缩小页面的大小,我将使用对话框本身的条件呈现来处理它,该对话框由后台bean属性确定,该属性将由命令操作设置:
<p:commandButton id="showSearchDialog"
action="#{managedBean.showSearchDialog()}"
update="dialogs"
oncomplete="PF('searchDialog').show()" />
<h:panelGroup id="dialogs" layout="block">
<p:dialog widgetVar="searchDialog" rendered="#{managedBean.currentDialog eq 'search'}">
<ui:include src="searchDialog.xhtml" />
</p:dialog>
</h:panelGroup>public class ManagedBean {
private String currentDialog;
public String getCurrentDialog() { return currentDialog; }
public void showSearchDialog() { currentDialog = "search"; }
}然后,可以有条件地呈现' dialogs‘块中的所有对话框,并使用ajax动态刷新呈现的内容。
要考虑的另一个选项是使用PrimeFaces对话框框架,它允许您在运行时动态地呈现外部页面。
https://stackoverflow.com/questions/25869401
复制相似问题