2011-10-24 5 views
3

Richfaces 4でJSF2を使用して作業tabPanelを作成する際に問題があります。

タブを選択するたびに、ajaxリクエストが送信されたことがわかりますが、バッキングBeanのactionListenerメソッドが呼び出されません(デバッグモードで実行されていることがわかります)。

再度タブを選択すると、デバッグモードになり、myBean.activateTabメソッドに入ることがわかります。Richfaces 4 tabPanel actionListenerが最初の呼び出しで機能しない

TabPanelTest.xhtml

<h:form id="myFormTest"> 

    <rich:tabPanel id="myTabPanel" value="Tab1" activeItem="#{myBean.tabState.selectedTab}" 
     switchType="ajax"> 

     <rich:tab id="Tab1" label="Tab 1" actionListener="#{myBean.activateTab}"> 

      <ui:include src="myTab.xhtml"> 
       <ui:param name="filterText" value="Tab 1" /> 
      </ui:include> 

     </rich:tab> 

     <rich:tab id="Tab2" label="Tab 2" actionListener="#{myBean.activateTab}"> 

      <ui:include src="myTab.xhtml"> 
       <ui:param name="filterText" value="Tab 2" /> 
      </ui:include> 

     </rich:tab> 
    </rich:tabPanel> 
</h:form> 


myBean.java

public void activateTab(ActionEvent ae) 
{ 
    String componentId = ae.getComponent().getId(); 
} 



大幅理解すべてのヘルプ。

答えて

1

Ok ....私は結局解決策を自分で見つけました!

私は、各リッチからActionListenerを削除:あなたはタブパネルのためのitemChangeListener属性を使用してみましたitemChanges

<h:form id="myFormTest"> 

       <rich:tabPanel id="myTabPanel" value="Tab1" activeItem="#{myBean.tabState.selectedTab}" 
         switchType="ajax"> 

        <a4j:ajax event="itemchange" onerror="handleAjaxError" listener="#{myRequestsBean.activateTab}" render="myTabPanel" /> 

         <rich:tab id="All" header="#{messages['test.allTab']}" name="#{messages['test.allTab']}"> 

            <ui:include src="myTab.xhtml"> 
              <ui:param name="filterText" value="{messages['MyRequests.allFilter']}" /> 
            </ui:include> 

         </rich:tab> 

         <rich:tab id="Pending" header="#{messages['MyRequests.pendingTab']}" name="#{messages['MyRequests.pendingTab']}"> 

            <ui:include src="myTab.xhtml"> 
              <ui:param name="filterText" value="#{messages['MyRequests.pendingFilter']}" /> 
            </ui:include> 

         </rich:tab> 
       </rich:tabPanel> 
    </h:form> 
+1

をリッスンするために、AJAX:タブ、代わりにはa4jを使用。私は決して行動することができませんでしたが、これを処理するための期待された方法のようです。 –

関連する問題