navegação no rich:tabPanel

5 respostas
F

não sei se ja foi respondido pelo grupo mas eu não consegui achar a
solução…

preciso navegar entre algumas abas do meu rich:tabPanel usando botões
tipo, ‘próximo’ e ‘anterior’… achei um exemplo aki mas não conegui
implementar… comecei agora a trabalhar com jsf e ainda eu
barbeirando um pouco… segue abaixo um pedaço do meu código para ver
se alguém consegue me ajudar…

xhtml:

<rich:tabPanel id="tabPanel" selectedTab="#{action.tabSelecionada}" > 
   <!-- primaira tab --> 
   <rich:tab label="Solicitacao" name="solicitacao"> 
      ... 
      <!-- botão de 'próximo' --> 
      <a4j:commandButton 
        id="btnProxima" 
        value="Próxima" 
        action="#{action.selectTab(pessoas)}" 
        reRender="tabPanel"/> 


   </rich:tab> 
   <!-- segunda tab --> 
   <rich:tab label="Pessoas" name="pessoas"> 
      ... 


      <!-- botão de 'próximo' --> 
      <a4j:commandButton 
        id="btnProxima" 
        value="Próxima" 
        action="#{postoAction.selectTab(endereco)}" 
        reRender="tabPanel"/> 


   </rich:tab> 
   <!-- terceira tab --> 
   <rich:tab label="Pessoas" name="endereco"> 
      ... 


      <!-- botão de 'próximo' --> 
      <a4j:commandButton 
        id="btnProxima" 
        value="Próxima" 
        action="#{postoAction.selectTab(<!-- próxima aba -->)}" 
        reRender="tabPanel"/> 


   </rich:tab> 


   <!--quarta tab --> 


   <!-- e assim por diante--> 
</rich:tabPanel>

eu pensei em passar como parametro para o action o nome da próxima aba
e rendereziar o tabPanel para habilitar a aba…

não sei como passar essa string da próxima aba no action do
a4j:commandButton…

segue abaixo o meu método na action…

public void selectTab(String pSelectTab){ 
         tabSelecionada = pSelectTab;

}

agradeço mto se alguém puder me ajudar!!!

5 Respostas

vitenho
class MeuTabBean {

List<String> tabs;
String tab;
//get e set

public void proximo();
   tab = tabs.get(tabs.indexof(tab)+1);
}


public void anteiror();
   tab = tabs.get(tabs.indexof(tab)-1);
}


usa o selectedtab do tabpanel para o atributo tab do MeuTabBean 

valeu
F

agradeço pela atenção do amigo vitenho… só tenho uma dúvido…

como vou informar pro MeuTabBean que o ‘List tabs’ é para pegar a lista com o name das tabs!!?

se alguém mais souber a resposta eu tbm já agradeço!!!

valeu!!!

vitenho
<rich:tabPanel id="tabpanel" selectedTab="#{bean.tab}">

            <rich:tab name="TAB_1">
               <a:commandButton action="#{bean.proximo}" reRender="tabpanel">
                  <f:setPropertyActionListener value="TAB_2" target="#{bean.tab}" />
               </a:commandButton>
            </rich:tab>

            <rich:tab name="TAB_2">
               <a:commandButton action="#{bean.proximo}" reRender="tabpanel">
                  <f:setPropertyActionListener value="TAB_3" target="#{bean.tab}" />
               </a:commandButton>
            </rich:tab>

            <rich:tab name="TAB_3">
            </rich:tab>

         </rich:tabPanel>
String tab; 
//get e set

	public void proximo() {
		System.out.println(tab);
	}
F

achei a solução…

é só passar como parâmetro a próxima tab que será habilitada… da mesma forma que estava fazendo no primeiro código… só que estava cometendo um erro (juvenil) de não colocar a string entre 'aspas!!!

<rich:tabPanel id="tabPanel" selectedTab="#{action.tabSelecionada}" >   
   <!-- primaira tab -->   
   <rich:tab label="Solicitacao" name="solicitacao">   
      ...   
      <!-- botão de 'próximo' -->   
      <a4j:commandButton   
        id="btnProxima"   
        value="Próxima"   
        action="#{action.selectTab('pessoas')}"   
        reRender="tabPanel"/>   
  
  
   </rich:tab>   
   <!-- segunda tab -->   
   <rich:tab label="Pessoas" name="pessoas">   
      ...   
  
  
      <!-- botão de 'próximo' -->   
      <a4j:commandButton   
        id="btnProxima"   
        value="Próxima"   
        action="#{action.selectTab('endereco')}"   
        reRender="tabPanel"/>   
  
  
   </rich:tab>   
   <!-- terceira tab -->   
   <rich:tab label="Pessoas" name="endereco">   
      ...   
  
  
      <!-- botão de 'próximo' -->   
      <a4j:commandButton   
        id="btnProxima"   
        value="Próxima"   
        action="#{postoAction.selectTab(<!-- próxima aba -->)}"   
        reRender="tabPanel"/>   
  
  
   </rich:tab>   
  
  
   <!--quarta tab -->   
  
  
   <!-- e assim por diante-->   
</rich:tabPanel>

na Action fica como no primeiro código… só iniciei a ‘tabSelecionada’ como name da primeira aba que eu quero…

F

valeu pela atenção vitenho… vou testar do seu jeito tbm… esse jeito que postei logo acima tbm funciona blz… fica regitrado mais uma forma de fazer!!!

valeu mesmo!!!

Criado 7 de junho de 2010
Ultima resposta 8 de jun. de 2010
Respostas 5
Participantes 2