Eae pessoal,
Estou com alguns probleminhas com richfaces, mais necessariamente no componente TabPanel são 2 problemas:
1ª
seguinte, tenho um TabPanel e dentro dele tenho quatro Tabs.
preciso que ao clicar em cada Tab eu consiga chamar o método dentro do meu controller, ja mudei o switchType para ajax, cliente, server e nada…
2ª
Dentro da primeira tab tenho alguns inputText´s e um commandButton salvar ao clicar neste commandButton ele acessa o método normalmente e salva meu objeto,
gostaria de saber se após isso teria como eu redirecionar para a segunda Tab pelo mesmo método ???
JSF
<h:form><rich:tabPanelswitchType="client"id="panel"><rich:tabheader="Cadastro"><h:panelGroupid="messagePanel"layout="block"><h:messageserrorStyle="color: red"infoStyle="color: green"layout="table"/></h:panelGroup><br/><h:panelGridcolumns="6"border="0"><h:outputLabelvalue="Nome:"for="nome"/><h:outputLabelvalue="Cpf/Cnpj:"for="cpfCnpj"/><h:outputLabelvalue="Contrato:"for="contrato"/><h:outputLabelvalue="Celular:"for="celular"/><h:outputLabelvalue="Residencial"for="residencial"/><h:outputLabelvalue="E-mail"for="eMail"/><h:inputTextid="nome"value="#{cadastroClienteController.chamado.nome}"size="20"maxlength="100"required="true"/><h:inputTextid="cpfCnpj"value="#{cadastroClienteController.chamado.cpfcnpj}"size="20"maxlength="14"required="true"/><h:inputTextid="contrato"value="#{cadastroClienteController.chamado.contrato}"size="20"maxlength="30"required="true"/><h:inputTextid="celular"value="#{cadastroClienteController.chamado.telefoneCelular}"size="20"maxlength="20"required="true"/><h:inputTextid="residencial"value="#{cadastroClienteController.chamado.telefoneResidencial}"size="20"maxlength="20"required="true"/><h:inputTextid="eMail"value="#{cadastroClienteController.chamado.eMail}"size="20"maxlength="100"required="false"/><h:outputLabelvalue=""for=""/><h:outputLabelvalue=""for=""/><h:outputLabelvalue=""for=""/><h:outputLabelvalue=""for=""/><h:outputLabelvalue=""for=""/><h:commandButtonaction="#{cadastroClienteController.salvar}"value="Salvar"/></h:panelGrid></rich:tab><rich:tabheader="Produto"><h:outputLabelvalue="De tab cadastro vem para esta atraves do metodo salvar"/></rich:tab><rich:tabheader="Serviço"><h:outputLabelvalue="teste"/></rich:tab><rich:tabheader="Visita"><h:outputLabelvalue="teste"/></rich:tab></rich:tabPanel></h:form>
METODO
publicvoidsalvar(){try{chamado.setUsuario(usuario);chamado.setClienteCorporativo(clienteCorporativo);chamado.setDataCadastro(newDate());chamado.setStatusChamado(ConstantesAtendimento.STATUS_ABERTO);chamado.setCaso99(ConstantesAtendimento.STATUS_CHAMADO_CASO99_SIM);chamadoDAO.save(chamado);Stringmsg="Chamado salvo com sucesso!";JSFHelper.addSuccessMessage(msg);}catch(Exceptione){Stringmsg="Erro ao salvar chamado";logger.error(msg,e);JSFHelper.addErrorMessage(msg);}}
Mudei o switchType para ajax, tinha tentado o onClick mas não deu certo qualquer click na tela ele dava alert, dai tentei o onbeforeitemchange e funcionou com um alert.
dai pense a4j e tcharammmmmmm funfou a primeira parte.
Ainda preciso de ajuda para o metodo ir para a proxima tab.
V
vejjitt0
Agora se você quiser que cada aba acesse um metodo diferente no controller você pode fazer assim:
Bem consegui a segunda dúvida também
que era através de método no bean ou controller conseguir mudar de uma tab para outra.
segue o que eu fiz:
primeiramente estou na versão 4.3.0, então tive de no controller criar um binding do componente de abas.
se você estiver no richfaces 3 é assim:
privateHtmlTabPaneltabPanel; //criargettersanssetters//fazerissodentrodoseumétodochamadonaabaqueantecedeatrocatabPanel.setSelectedTab("tab de destino");
se você estiver no richfaces 4 é assim:
UITabPaneltabPanel; //criargettersanssetters//fazerissodentrodoseumétodochamadonaabaqueantecedeatrocatabPanel.setActiveItem("tab de destino");
publicvoidsalvar(){try{//fazosalvar//nocasodorichfaces3tabPanel.setSelectedTab("TAB_2");//nocasodorichfaces4tabPanel.setActiveItem("TAB_2");}catch(Exceptione){Stringmsg="Erro ao salvar chamado";logger.error(msg,e);JSFHelper.addErrorMessage(msg);}}