1

プライムフェイスを使用してページをリロードせずに動的タブ(無関係なタブ)を追加することは可能ですか?

こういうことをしたい

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

メニューバーがあり、メニューをクリックすると動的タブが作成されます。タブはページ(xhtml)をロードする必要があり、タブはページ全体をリロードせずに追加する必要があり、マネージドBeanに依存しないようにする必要があります(主にリクエストスコープを使用してステートレスを最大化しようとしているため)

Beanデータに基づいてタブを追加する例を見てきました。しかし、私の場合、各タブは独立しています(ページ)

現在のフレックスアプリケーションからサンプル画像を追加しました(JSFに移行しようとしています)。各タブは、独立したscreen/xhtmlファイルのようなものです。サーバーに保存されたビューステートはありません。メニュー項目をクリックすると、新しい画面コンテンツで新しいタブが追加されます。ページのリロード時にタブが失われます(ステートレスにしようとしているので、タブと一緒に暮らすことができます)

サンプル画像

4

1 に答える 1

2

タブに何を配置するかについて、より詳細に質問を具体化する必要がある場合があります。しかし、これを試してください:

  1. TabViewクライアント側をバッキングBeanのインスタンスにバインドします。xhmtl側:

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

    バッキングビーンで

    TabView tabView = new TabView();
    //getter and setter
    
  2. 以下のスニペットをメソッドに実装してTab、の子としてを追加します。TabPanel

    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. PrimefacesRequestContextを使用して、新しいタブを反映するようにビューをajax更新します

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

または、7SpecialGemsが指摘したようTabViewに、バッキングBeanリストにバインドし、そのリストに新しいアイテムを追加して、TabView上記の3.に示すように、変更を反映するようにRequestContextで更新することもできます。

于 2012-12-22T07:02:40.863 に答える