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
@wryel, I’m sure yes, the version of the Primefaces that is running here is the 3.5
– Juliana Marques