How do P:Izard go back to a certain tab?

Asked

Viewed 261 times

0

I have a p:Wizard in which, if a certain condition is true, it advances to the last tab by clicking next. But I’m not getting it back to the first tab if I click back. There’s a way to do this with Wizard?

Method onFlowProcess

public String onFlowProcess(FlowEvent event) {
   boolean skip = !tipoProtocoloSelecionado.equals(TipoProtocoloConstante.REGISTRO_ONLINE_EMPRESA);

   if(skip) {
       skip = false;

       return "tabAnexoArquivos";
   }

   else {
      return event.getNewStep();
   }
 }

View

<h:form>
        <p:wizard backLabel="Voltar" nextLabel="Próximo" showStepStatus="false" flowListener="#{registroOnlineEmpresaController.onFlowProcess}">
            <p:tab id="tabDadosEmpresa" title="Dados da Empresa">
                <p:panel id="dadosEmpresa" header="Dados da Empresa">
                    <h:outputLabel value="Os campos marcados com * são de preenchimento obrigatório" style="font-weight: bold; color: #f00;" />

                    <br />
                    <br />

                    <h:outputLabel value="Tipo*: " style="font-weight: bold"/>

                    <h:selectOneRadio value="#{registroOnlineEmpresaController.empresa.tipoPessoaJuridica}"
                                      style="display: inline;" required="true" 
                                      requiredMessage="Tipo: Preenchimento Obrigatório">

                        <f:selectItems value="#{registroOnlineEmpresaController.obterTiposPessoaJuridica()}"/>

                        <p:ajax event="change" listener="#{registroOnlineEmpresaController.obterSubtiposPessoaJuridica()}"
                                update="@([id$=blocoSubtipoPessoaJuridica])"/>

                    </h:selectOneRadio>

                    <p:outputPanel id="blocoSubtipoPessoaJuridica">
                        <br style="display: #{registroOnlineEmpresaController.renderizaSubTiposPessoaJuridica ? 'block' : 'none'}"/>
                        <br style="display: #{registroOnlineEmpresaController.renderizaSubTiposPessoaJuridica ? 'block' : 'none'}"/>

                        <h:outputLabel value="Subtipo*: " style="font-weight: bold"
                                       rendered="#{registroOnlineEmpresaController.renderizaSubTiposPessoaJuridica}"/>

                        <h:selectOneMenu value="#{registroOnlineEmpresaController.empresa.subtipoPessoaJuridica}"
                                         style="display: inline; background-color: #fff;"
                                         rendered="#{registroOnlineEmpresaController.renderizaSubTiposPessoaJuridica}"
                                         required="true" requiredMessage="Subtipo: Preenchimento Obrigatório">

                            <f:selectItem noSelectionOption="true" itemLabel="Selecione..." />

                            <f:selectItems value="#{registroOnlineEmpresaController.obterSubtiposPessoaJuridica()}"/>

                        </h:selectOneMenu>
                    </p:outputPanel>

                    <br />
                    <br />

                    <h:outputLabel value="Tipo de Registro*: " style="font-weight: bold"/>

                    <h:selectOneMenu value="#{registroOnlineEmpresaController.tipoProtocoloSelecionado}"
                                     style="display: inline; background-color: #fff;" required="true" 
                                     requiredMessage="Tipo de Registro: Preenchimento Obrigatório"
                                     converter="tipoProtocoloConverter">

                            <f:selectItem noSelectionOption="true" itemLabel="Selecione..." />

                            <f:selectItems value="#{registroOnlineEmpresaController.obterTiposProtocolos()}"
                                           var="tipoProtocolo" itemValue="#{tipoProtocolo}" itemLabel="#{tipoProtocolo.descricao}"/>

                            <p:ajax event="change" update="@([id$=nomeFantasia], [id$=objetoCapitalSocial])" />
                        </h:selectOneMenu>

                    <br />
                    <br />

                    <h:outputLabel value="Razão Social*: " style="font-weight: bold"/>

                    <p:inputText value="#{registroOnlineEmpresaController.empresa.nome}"/>

                    <p:outputPanel id="nomeFantasia">
                        <br style="display: #{registroOnlineEmpresaController.renderizarCamposRegistro() ? 'block' : 'none'}"/>
                        <br style="display: #{registroOnlineEmpresaController.renderizarCamposRegistro() ? 'block' : 'none'}"/>

                        <h:outputLabel value="Nome Fantasia*: " style="font-weight: bold" 
                                       rendered="#{registroOnlineEmpresaController.renderizarCamposRegistro()}"/>
                        <p:inputText value="#{registroOnlineEmpresaController.empresa.nomeFantasia}" 
                                     rendered="#{registroOnlineEmpresaController.renderizarCamposRegistro()}"
                                     required="true" requiredMessage="Nome Fantasia: Preenchimento Obrigatório"/>

                    </p:outputPanel>

                    <br />
                    <br />

                    <h:outputLabel value="CNPJ*: " style="font-weight: bold"/>

                    <p:inputMask value="#{registroOnlineEmpresaController.empresa.cpfCnpj}" mask="99.999.999/9999-99" size="18"
                                 required="true" requiredMessage="CNPJ: Preenchimento Obrigatório" 
                                 validator="#{registroOnlineEmpresaController.validarCnpj}"/>

                    <br />
                    <br />

                    <h:outputLabel value="Email*: " style="font-weight: bold"/>

                    <p:inputText value="#{registroOnlineEmpresaController.empresa.email}"
                                 required="true" requiredMessage="Email: Preenchimento Obrigatório"/>

                    <br />
                    <br />

                    <p:outputPanel id="objetoCapitalSocial">
                        <p:outputPanel rendered="#{registroOnlineEmpresaController.renderizarCamposRegistro()}">
                            <h:outputLabel value="Categoria*: " style="font-weight: bold"/>

                            <h:selectOneMenu value="#{registroOnlineEmpresaController.empresa.categoria}" style="background-color: #fff;"
                                             required="true" requiredMessage="Categoria: Selecione uma Opção...">
                                <f:selectItems value="#{registroOnlineEmpresaController.obterCategorias()}" />

                                <p:ajax event="change" update="@([id$=blocoCapitalSocial], [id$=blocoTemCapitalDestacado])"/>

                            </h:selectOneMenu>

                            <br />
                            <br />

                            <h:outputLabel value="Objeto Social*: " style="font-weight: bold"/>

                            <br />

                            <h:inputTextarea value="#{registroOnlineEmpresaController.empresa.objeto}" cols="53" rows="7"
                                             required="true" requiredMessage="Objeto Social: Preenchimento Obrigatório"/>

                            <br />
                            <br />

                            <h:outputLabel value="Restrição de Objeto Social*: " style="font-weight: bold"/>

                            <p:inputText value="#{registroOnlineEmpresaController.empresa.objeto}"
                                         required="true" requiredMessage="Restrição de Objeto Social: Preenchimento Obrigatório"/>

                            <br />
                            <br />

                            <p:outputPanel id="blocoTemCapitalDestacado">
                                <h:selectBooleanCheckbox value="#{registroOnlineEmpresaController.capitalDestacado}" title="Tem Capital Destacado"
                                                     rendered="#{registroOnlineEmpresaController.empresa.categoria == 'F'}">
                                    <p:ajax event="change" update="@([id$=blocoCapitalSocial])"/>
                                </h:selectBooleanCheckbox>

                                <h:outputLabel value="Possui capital destacado" style="font-weight: bold"
                                               rendered="#{registroOnlineEmpresaController.empresa.categoria == 'F'}"/>

                                <br style="display: #{registroOnlineEmpresaController.empresa.categoria == 'F' ? 'block' : 'none'}"/>
                                <br style="display: #{registroOnlineEmpresaController.empresa.categoria == 'F' ? 'block' : 'none'}"/>
                            </p:outputPanel>

                            <p:outputPanel id="blocoCapitalSocial">
                                <h:outputLabel value="Capital Social*: " style="font-weight: bold"
                                               rendered="#{registroOnlineEmpresaController.capitalDestacado or registroOnlineEmpresaController.empresa.categoria == 'M'}"/>

                                <p:inputText value="#{registroOnlineEmpresaController.empresa.valorCapital}"
                                             rendered="#{registroOnlineEmpresaController.capitalDestacado or registroOnlineEmpresaController.empresa.categoria == 'M'}"
                                             required="#{registroOnlineEmpresaController.capitalDestacado or registroOnlineEmpresaController.empresa.categoria == 'M'}">
                                    <f:convertNumber currencySymbol="R$" locale="pt_BR" pattern="#,##0.00" />
                                    <p:ajax event="change" update="@([id$=blocoCapitalSocial])"/>

                                </p:inputText>

                                <br style="display: #{registroOnlineEmpresaController.empresa.categoria == 'F' ? 'none' : 'block'}"/>
                                <br style="display: #{registroOnlineEmpresaController.empresa.categoria == 'F' ? 'none' : 'block'}"/>
                                <br style="display: #{registroOnlineEmpresaController.capitalDestacado ? 'block' : 'none'}"/>
                                <br style="display: #{registroOnlineEmpresaController.capitalDestacado ? 'block' : 'none'}"/>

                                <h:outputLabel value="Capital Social da Matriz*: " style="font-weight: bold"
                                               rendered="#{registroOnlineEmpresaController.empresa.categoria == 'F'}"/>

                                <p:inputText value="#{registroOnlineEmpresaController.empresa.valorCapitalMatriz}"
                                             required="#{registroOnlineEmpresaController.empresa.categoria == 'F'}"
                                             rendered="#{registroOnlineEmpresaController.empresa.categoria == 'F'}"
                                             requiredMessage="Capital Social da Matriz: Preenchimento Obrgatório">
                                    <f:convertNumber currencySymbol="R$" locale="pt_BR" pattern="#,##0.00" />
                                    <p:ajax event="change" update="@([id$=blocoCapitalSocial])"/>
                                </p:inputText>

                                <br style="display: #{registroOnlineEmpresaController.empresa.categoria == 'F' ? 'block' : 'none'}"/>
                                <br style="display: #{registroOnlineEmpresaController.empresa.categoria == 'F' ? 'block' : 'none'}"/>
                        </p:outputPanel>
                    </p:outputPanel>

                    </p:outputPanel>

                </p:panel>
            </p:tab>

            <p:tab id="tabEnderecoContatoEmpresa" title="Endereço e Contatos">
                <p:panel id="enderecoContatoEmpresa" header="Endereço e Contatos">
                    <h:outputLabel value="Os campos marcados com * são de preenchimento obrigatório" style="font-weight: bold; color: #f00;" />

                    <br />
                    <br />

                    <h:outputLabel value="CEP*: " style="font-weight: bold"/>

                    <p:inputMask id="cep" value="#{registroOnlineEmpresaController.enderecoEmpresa.endereco.cep}" mask="99999-999" size="9"
                                 required="true" requiredMessage="CEP: Preenchimento Obrigatório" 
                                 validator="#{registroOnlineEmpresaController.validarCep}">
                        <p:ajax event="change" update="tipoLogradouro, logradouro, numero, complemento, bairro, cidade, estado"
                                listener="#{registroOnlineEmpresaController.pesquisarEnderecoEmpresaPorCep()}"
                                process="@this"/>
                    </p:inputMask>

                    <br />
                    <br />

                    <h:outputLabel value="Tipo de Logradouro *: " style="font-weight: bold"/>

                    <p:inputText id="tipoLogradouro" value="#{registroOnlineEmpresaController.enderecoEmpresa.endereco.tipoLogradouro}" size="25" 
                                 required="true" requiredMessage="Tipo de Logradouro: Preenchimento Obrigatório"/>

                    <br />
                    <br />

                    <h:outputLabel value="Logradouro *: " style="font-weight: bold"/>

                    <p:inputText id="logradouro" value="#{registroOnlineEmpresaController.enderecoEmpresa.endereco.logradouro}" size="45" 
                                 required="true" requiredMessage="Logradouro: Preenchimento Obrigatório"/>

                    <br />
                    <br />

                    <h:outputLabel value="Número *: " style="font-weight: bold"/>

                    <p:inputText id="numero" value="#{registroOnlineEmpresaController.enderecoEmpresa.endereco.numero}" size="10"
                                 required="true" requiredMessage="Número: Preenchimento Obrigatório"/>

                    <br />
                    <br />

                    <h:outputLabel value="Complemento: " style="font-weight: bold"/>

                    <p:inputText id="complemento" value="#{registroOnlineEmpresaController.enderecoEmpresa.endereco.complemento}" size="45" />

                    <br />
                    <br />

                    <h:outputLabel value="Bairro *: " style="font-weight: bold"/>

                    <p:inputText id="bairro" value="#{registroOnlineEmpresaController.enderecoEmpresa.endereco.bairro}" size="45" 
                                 required="true" requiredMessage="Bairro: Preenchimento Obrigatório"/>

                    <br />
                    <br />

                    <h:outputLabel value="Cidade *: " style="font-weight: bold"/>

                    <p:inputText id="cidade" value="#{registroOnlineEmpresaController.enderecoEmpresa.endereco.cidade}" 
                                 size="45" style="margin-right: 5px;" required="true" requiredMessage="Cidade: Preenchimento Obrigatório"/>

                    <h:outputLabel value="UF *:" style="font-weight: bold" />

                    <p:inputText id="estado" value="#{registroOnlineEmpresaController.enderecoEmpresa.endereco.uf}" size="2"
                                 required="true" requiredMessage="UF: Preenchimento Obrigatório"/>

                    <br />
                    <br />

                    <h:outputLabel value="Telefone 1 *: " style="font-weight: bold"/>

                    <p:inputMask value="#{registroOnlineEmpresaController.enderecoEmpresa.endereco.ddd}" mask="99" 
                                 style="margin-right: 1px;" size="2" required="true" requiredMessage="Telefone 1: Preenchimento Obrigatório"/>

                    <p:inputMask value="#{registroOnlineEmpresaController.enderecoEmpresa.endereco.fone}" mask="?999999999" size="10"
                                 required="true" requiredMessage="Telefone 1: Preenchimento Obrigatório"/>
                    <br />
                    <br />

                    <h:outputLabel value="Telefone 2: " style="font-weight: bold"/>

                    <p:inputMask value="#{registroOnlineEmpresaController.enderecoEmpresa.endereco.ddd2}" mask="99" 
                                 style="margin-right: 1px;" size="2"/>

                    <p:inputMask value="#{registroOnlineEmpresaController.enderecoEmpresa.endereco.fone2}" mask="?999999999" size="10"/>

                </p:panel>
            </p:tab>
 <p:tab id="tabAnexoArquivos" title="Confirmação e Envio de Documentos">
                <p:panel id="anexoArquivos" header="Confirmação e Envio de Documentos">
                    <h:outputText value="AVISO: Será enviada uma mensagem no email cadastrado 
                                  com data de agendamento para apresentação dos documentos originais" 
                                  style="color: #f00; font-weight: bold;"/>

                    <br />
                    <br />

                    <fieldset>
                        <legend>
                            <h:outputLabel value="Anexar Arquivos" style="font-weight: bold"/>
                        </legend>

                        <p:outputPanel id="tipoDocumento">
                            <ul>
                                <ui:repeat value="#{registroOnlineEmpresaController.obterTiposDocumentosObrigatorios()}" var="itemTipoDocumento">
                                    <li>
                                        <p:commandLink actionListener="#{registroOnlineEmpresaController.abrirDialogTiposDocumentosObrigatorios(itemTipoDocumento)}"
                                            immediate="true" update="@([id$=tipoDocumento], [id$=panelTiposDocumentos])" title="Clique para anexar arquivos">
                                            <h:outputText value="#{itemTipoDocumento.descricao}" style="margin-right: 5px;"/>
                                            <p:graphicImage alt="Anexar" value="../imagens/site/anexar.png" />
                                        </p:commandLink>
                                    </li>

                                    <ui:repeat value="#{registroOnlineEmpresaController.recuperarArquivosAnexados(itemTipoDocumento)}"
                                               var="itemArquivoAnexado">

                                        <li style="margin-left: 20px;">
                                            <h:outputText value="#{itemArquivoAnexado.nomeArquivo}" style="margin-right: 1px;"/>
                                            <p:commandLink actionListener="#{registroOnlineEmpresaController.excluirAnexo(itemArquivoAnexado)}"
                                            style="margin-right: 3px;" immediate="true" update="@([id$=tipoDocumento])">
                                                <p:graphicImage alt="Excluir" value="../imagens/site/delete.png" />
                                            </p:commandLink>
                                        </li>

                                    </ui:repeat>
                                </ui:repeat>
                            </ul>

                            <br />
                            <br />

                            <p:commandButton icon="anexar" immediate="true" value="Anexar Outros Tipos de Arquivos" update="@([id$=panelTiposDocumentos])"
                                             actionListener="#{registroOnlineEmpresaController.abrirDialogTodosTiposDocumentos()}"/>
                        </p:outputPanel>

                    </fieldset>

                    <br />
                    <br />

                    <h:selectBooleanCheckbox value="#{registroOnlineEmpresaController.aceitacaoTermos}"
                                             title="Aceito o Termo de Responsabilidade"
                                             validator="#{registroOnlineEmpresaController.validarAceitacaoTermos}"/>

                    <h:outputLabel value="Aceito o " style="font-weight: bold"/>

                    <h:link target="blank" outcome="termoResponsabilidadeEmpresa" value="Termo de Responsabilidade" 
                            style="font-size: 11px; font-weight: bold;"/>

                    <br />
                    <br />

                    <p:commandButton icon="adicionar" value="Enviar Cadastro"
                                     action="#{registroOnlineEmpresaController.gerarRegistro()}" />

                    <p:dialog id="dialogAnexos" minHeight="70" header="Anexar Arquivos"
                              widgetVar="dialogAnexos">

                        <p:outputPanel id="panelTiposDocumentos">
                             <h:outputLabel value="Tipo de Documento *: " style="font-weight: bold" />
                             <h:selectOneMenu id="tiposDocumentos" style="height: 20px; width: 200px; background-color: #fff;"
                                             value="#{registroOnlineEmpresaController.tipoDocumentoSelecionado}"
                                             converter="tipoDocumentoRegistroOnlineEmpresaConverter">
                                <f:selectItem noSelectionOption="true" itemLabel="Selecione..." />
                                <f:selectItems value="#{registroOnlineEmpresaController.obterTodosTiposDocumentos()}"
                                    var="tipoDocumento" itemValue="#{itemTipoDocumento}" itemLabel="#{tipoDocumento.descricao}" />
                             </h:selectOneMenu>
                        </p:outputPanel>

                        <br />
                        <br />

                        <h:outputLabel value="Anexo de Arquivos *:" style="font-weight: bold" />

                        <br />
                        <br />

                        <p:fileUpload id="uploadAnexo"
                              fileUploadListener="#{registroOnlineEmpresaController.handleFileUpload}"
                              allowTypes="/(\.|\/)(gif|png|jpe?g|pdf)$/"
                              sizeLimit="10000000"
                              label="Escolher..."
                              multiple="true"
                              auto="true"
                              showButtons="false"
                              mode="advanced"
                              uploadLabel="Enviar Arquivos"
                              process="@this"
                              dragDropSupport="true"
                              required="true"
                              invalidFileMessage="Arquivo Inválido! Anexe apenas imagem e/ou PDFs"
                              invalidSizeMessage="Tamanho inválido! Tamanho máximo 10MB"
                              requiredMessage="Anexe pelo menos um arquivo"/>

                        <p:commandButton value="Enviar" onclick="dialogAnexos.hide();" immediate="true"
                                         update="@([id$=tipoDocumento])" actionListener="#{registroOnlineEmpresaController.adicionarTipoDocumento()}"/>
                    </p:dialog>

                </p:panel>
            </p:tab>
        </p:wizard>
    </h:form>
  • Are you sure the primefaces version is 3.5 ? The onFlowProcess method is a newer version, in 3.5 the method is called handleFlow.

  • @wryel, I’m sure yes, the version of the Primefaces that is running here is the 3.5

2 answers

2

If you want to do via JS:

onclick="PF('widget_j_idt701_j_idt702').loadStep('tabDadosEmpresa','back');"

Be sure to specify an id for the component. If I’m not confusing the versions, in PF 7.0 vc you can use Primefaces.execute p/ run javascript inside the bean.

  • Wizard doesn’t have onclick, I tried to put the code on onBack, but to no avail

1


I was able to solve by making Binding component and using p:commandButtons for the back and next buttons instead of using the p:Wizard buttons and created methods to be executed by clicking the two buttons.

onNext

public void onNext() {
   if(wizardForm.getStep().equals("tabEnderecoContatoEmpresa") && !tipoProtocoloSelecionado.equals(TipoProtocoloConstante.REGISTRO_ONLINE_EMPRESA)) {
       RequestContext.getCurrentInstance().execute("wizardForm.loadStep(wizardForm.cfg.steps[4], true)");
   }

   else {
       RequestContext.getCurrentInstance().execute("wizardForm.next()");
   }

   if((wizardForm.getStep().equals("tabEnderecoContatoEmpresa") && !tipoProtocoloSelecionado.equals(TipoProtocoloConstante.REGISTRO_ONLINE_EMPRESA)) 
           || (wizardForm.getStep().equals("tabResponsaveisTecnicos"))) {
       renderizaBotaoProximo = false;
   }

   if(wizardForm.getStep().equals("tabDadosEmpresa")) {
       renderizaBotaoVoltar = true;
   }

   }

onBack

public void onBack() {   
   if(wizardForm.getStep().equals("tabAnexoArquivos") && !tipoProtocoloSelecionado.equals(TipoProtocoloConstante.REGISTRO_ONLINE_EMPRESA)) {
       renderizaBotaoProximo = true;
       RequestContext.getCurrentInstance().execute("wizardForm.loadStep(wizardForm.cfg.steps[1], true)");
   }

   else if(wizardForm.getStep().equals("tabEnderecoContatoEmpresa") && !tipoProtocoloSelecionado.equals(TipoProtocoloConstante.REGISTRO_ONLINE_EMPRESA)) {
       renderizaBotaoProximo = true;
       renderizaBotaoVoltar = false;
       RequestContext.getCurrentInstance().execute("wizardForm.loadStep(wizardForm.cfg.steps[0], true)");
   }

   else {
       if(wizardForm.getStep().equals("tabEnderecoContatoEmpresa")) {
           renderizaBotaoVoltar = false;
       }

       RequestContext.getCurrentInstance().execute("wizardForm.back()");
   }
   }

Browser other questions tagged

You are not signed in. Login or sign up in order to post.