1

単一のタブ (アコーディオン パネル全体ではなく) のみを動的に有効または無効にしたい。私は次のアプローチを試しました。これが私のコードです:

index.xhtml

<p:accordionPanel id="accordionPanelId" widgetVar="accordionPanelWidget">
   <p:tab id="tab1" title="First Tab">
       <h:outputText value="Contents of Tab1"/>
       <h:form>
         <p:commandButton value="Enable Tab2" action="#{tabBean.buttonAction}" update=":accordionPanelId:tab2"/>
       </h:form>
   </p:tab>

   <p:tab id="tab2" title="Second Tab" disabled="#{tableBean.disableTab}">
      <h:outputText value="Contents of Tab2"/> 
   </p:tab>
</p:accordionPanel>

TabBean.java

@ManagedBean
@ViewScoped
public class TabBean implements Serializable {

    private boolean disableTab=true;

    public boolean isDisableTab() {
        return disableTab;
    }

    public void setDisableTab(boolean disableTab) {
        this.disableTab = disableTab;
    }

    public void buttonAction()
    {
        disableTab = false;
    }

}

上記のアプローチでは、Tab2 のコンテンツが表示されていますが、タブ ヘッダーはまだフリーズしています。これは、これを達成するための神のアプローチではない可能性があります...このアプローチの他の方法または変更を提案してください。

編集: アコーディオン パネル全体を次のように更新すると、上記のアプローチは正常に機能します。

<p:commandButton value="Enable Tab2" action="#{tabBean.buttonAction}" update=":accordionPanelId"/>

しかし、すべてのタブを更新したくありません。

4

2 に答える 2