首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通过备份bean从另一个文件中包含对话框

通过备份bean从另一个文件中包含对话框
EN

Stack Overflow用户
提问于 2014-09-16 12:56:45
回答 1查看 1.1K关注 0票数 0

我有一个Primefaces项目,在这个项目中,我试图复制桌面应用程序的行为。由于桌面应用程序的性质,有相当多的弹出对话框,导致页面的处理变得非常慢(初始页面加载:10-20秒,AJAX请求:6-10秒)。

我已经为所有对话框提供了单独的文件,并且我希望使用备份bean将它们弹出为对话框,而不必在我的主文件中使用<ui:include>。有办法这样做吗?

例如:

代码语言:javascript
复制
<p:commandButton id="showSearchDialog"
                 action="#{managedBean.showSearchDialog()}"/>
<p:dialog widgetVar="searchDialog">
</p:dialog>
代码语言:javascript
复制
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()");
  }
}
EN

回答 1

Stack Overflow用户

发布于 2014-09-16 18:07:50

如果您的目标是缩小页面的大小,我将使用对话框本身的条件呈现来处理它,该对话框由后台bean属性确定,该属性将由命令操作设置:

代码语言:javascript
复制
<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>
代码语言:javascript
复制
public class ManagedBean {
  private String currentDialog;
  public String getCurrentDialog() { return currentDialog; }
  public void showSearchDialog() { currentDialog = "search"; }
}

然后,可以有条件地呈现' dialogs‘块中的所有对话框,并使用ajax动态刷新呈现的内容。

要考虑的另一个选项是使用PrimeFaces对话框框架,它允许您在运行时动态地呈现外部页面。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25869401

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档