1

是否可以添加动态选项卡(不相关的选项卡)而无需使用素面重新加载页面。

我想做这样的事情

http://blog.favrik.com/examples/tabs/

我们将有一个菜单栏,当单击菜单时,将创建一个动态选项卡。标签应该加载一个页面(xhtml),应该添加标签而不重新加载整个页面并且不依赖任何托管bean(因为我们试图最大程度地使用请求范围)

我已经看到了显示基于 bean 数据添加选项卡的示例。但在我的情况下,每个选项卡都是独立的(页面)

我已经从当前的 flex 应用程序中添加了一个示例图像,(试图将其迁移到 JSF)关于我正在尝试做的事情。每个选项卡就像一个独立的屏幕/xhtml 文件。服务器中没有保存视图状态。单击菜单项时,会添加一个带有新屏幕内容的新选项卡。在页面重新加载时选项卡将丢失(我们可以忍受它,因为我们试图成为无状态)

示例图像

4

1 回答 1

2

您可能需要更详细地说明您将在选项卡中放置的内容,从而更加充实您的问题。但是试试这个:

  1. 将您的客户端绑定TabView到支持 bean 中的一个实例。在 xhmtl 方面:

    <p:tabView id="myTabPanel" binding="#{myBackingBean.tabView}" />
    

    在后备豆中

    TabView tabView = new TabView();
    //getter and setter
    
  2. 在方法中实现下面的代码片段以将 a 添加TabTabPanel

    TabView tabView = new TabView();
    Tab newTab = new Tab();             //Create new Tab
    newTab.setTitle("Tab Title");       //Set a basic property
    tabView.getChildren().add(newTab);  //Add as a child of the TabView
    
  3. 使用 primefaces RequestContextajax 更新视图以反映新选项卡

      RequestContext context = RequestContext.getCurrentInstance();  
      context.update("myTabPanel");
    

或者,就像 7SpecialGems 指出的那样,您可以简单地将您绑定TabView到一个支持 bean 列表,然后简单地向该列表添加一个新项目,TabView如上面 3. 中所示使用 RequestContext 更新以反映更改

于 2012-12-22T07:02:40.863 回答