Tenho um formulário de cadastro de pessoa fisica e cadastro de pessoa jurídica. Ambos ficam na mesma pagina, e mudam atravez de um radio.
Até ai tudo bem.
O problema vem na hora de exibir as mensagens de erro: Quando vou cadastra um cliente fisico em branco, as mensagens de erro aparecem normal. Já quando vou cadastrar uma pessoa jurídica em branco, preciso dar dois clicks no <p:commandbutton> para que as mensagens de erro aparecam.
Estou usando JSF 2 e Primefaces.
Cara coloca seu codigo ai pra gente ver.
[code] <f:view>
<h:outputText styleClass=“infoForm” value=“Campos marcados com asterisco(*) são obrigatórios”/>
<p:panel header="#{clienteController.tituloPanel}" id=“cadastroPanel” style=“width: 700px”>
<h:form id=“selectRadio”>
<p:messages id=“mensagensErro”/>
<h:panelGrid columns=“2” style=“margin-right: 210px”>
<h:graphicImage library=“images” name=“seta_selecione.gif” alt=“Tipo de Cliente”/>
<h:selectOneRadio value="#{clienteController.renderizaForm}" style=“font-weight: bold;”>
<f:selectItem itemLabel=“Pessoa Física” itemValue=“clienteFisico” />
<f:selectItem itemLabel=“Pessoa Jurídica” itemValue=“clienteJuridico” />
<f:ajax execute="@form" render=":cadastroPanel" event=“change”/>
</h:selectOneRadio>
</h:panelGrid>
</h:form>
<p:outputPanel id="outputforms">
<h:form id="clienteFisico" rendered="#{clienteController.renderizaForm.equals('clienteFisico')}" >
<h:panelGrid id="clienteFisicoPanelGrid" columns="2" style="padding-bottom: 10px;" columnClasses="coluna1, coluna2">
<h:outputLabel value="Nome *" for="nome" />
<h:inputText id="nome" value="#{clienteController.pessoaFisica.nome}" title="Nome" size="35"/>
<h:outputLabel value="Cpf *" for="cpf"/>
<p:inputMask id="cpf" value="#{clienteController.pessoaFisica.cpf}" mask="999.999.999-99" title="Cpf"/>
<h:outputLabel value="Rg *" for="rg" />
<h:column>
<h:inputText id="rg" value="#{clienteController.pessoaFisica.rg}" title="Rg"/>
<h:outputText value="(Apenas números, sem pontos ou traço)" styleClass="infoForm"/>
</h:column>
<h:outputLabel value="Sexo *" for="sexo" />
<h:selectOneMenu id="sexo" value="#{clienteController.pessoaFisica.sexo}" title="Sexo" >
<f:selectItems value="#{clienteController.sexo}" var="item" itemLabel="#{item.descricao}" />
</h:selectOneMenu>
<h:outputLabel value="Data de Nascimento *" for="dataNascimento" />
<p:calendar value="#{clienteController.pessoaFisica.dataNascimento.time}" id="dataNascimento" pattern="dd/MM/yyyy"/>
<h:outputLabel value="Email *" for="email" />
<h:inputText id="email" value="#{clienteController.pessoaFisica.email}" title="Email" size="35" />
<h:outputLabel value="Telefone *" for="telefone1" />
<p:inputMask mask="(99) 9999 - 9999" id="telefone1" value="#{clienteController.pessoaFisica.telefone1}" title="Telefone1" />
<h:outputLabel value="Telefone 2" for="telefone2" />
<p:inputMask mask="(99) 9999 - 9999" id="telefone2" value="#{clienteController.pessoaFisica.telefone2}" title="Telefone2" />
<h:outputLabel value="Celular " for="celular" />
<p:inputMask mask="(99) 9999 - 9999" id="celular" value="#{clienteController.pessoaFisica.celular}" title="Celular" />
<h:outputLabel value="Fax " for="fax" />
<p:inputMask mask="(99) 9999 - 9999" id="fax" value="#{clienteController.pessoaFisica.fax}" title="Fax" />
<h:outputLabel value="CEP *" for="cep"/>
<p:autoComplete id="cep" value="#{clienteController.cep}" completeMethod="#{clienteController.complete}" selectListener="#{clienteController.handleCEPSelecionado}"
onSelectUpdate="siglaUf,cidade,bairro,logradouro,complemento"/>
<h:outputLabel value="UF *" for="siglaUf"/>
<h:inputText id="siglaUf" value="#{clienteController.enderecoClienteFisico.siglaUF}" disabled="true"/>
<h:outputLabel value="Cidade *" for="cidade"/>
<h:inputText id="cidade" value="#{clienteController.enderecoClienteFisico.cidade}" disabled="true"/>
<h:outputLabel value="Bairro *" for="bairro"/>
<h:inputText id="bairro" value="#{clienteController.enderecoClienteFisico.bairro}"/>
<h:outputLabel value="Logradoudo *" for="logradouro"/>
<h:inputText id="logradouro" value="#{clienteController.enderecoClienteFisico.logradouro}"/>
<h:outputLabel value="Complemento" for="complemento"/>
<h:inputText id="complemento" value="#{clienteController.enderecoClienteFisico.complemento}"/>
<h:outputLabel for="numero" value="Número *"/>
<h:inputText id="numero" value="#{clienteController.enderecoClienteFisico.numero}"/>
</h:panelGrid>
<p:commandButton action="#{clienteController.saveClienteFisico}" value="Salvar" id="buttonFisico" image="salvar" update="clienteFisico selectRadio:mensagensErro" />
</h:form>
<h:form id="clienteJuridico" rendered="#{clienteController.renderizaForm.equals('clienteJuridico')}" >
<h:panelGrid id="clienteJuridicoPanelGrid" columns="2" columnClasses="coluna1, coluna2">
<h:outputLabel value="CNPJ *" for="cnpj" />
<h:inputText id="cnpj" value="#{clienteController.pessoaJuridica.cnpj}" title="Cnpj" />
<h:outputLabel value="Razao Social *" for="razaoSocial" />
<h:inputText id="razaoSocial" value="#{clienteController.pessoaJuridica.razaoSocial}" title="RazaoSocial" />
<h:outputLabel value="Nome Fantasia *" for="nomeFantasia" />
<h:inputText id="nomeFantasia" value="#{clienteController.pessoaJuridica.nomeFantasia}" title="NomeFantasia" />
<h:outputLabel value="Tipo *" for="tipoCliente" />
<h:selectOneMenu id="tipoCliente" value="#{clienteController.pessoaJuridica.tipoPessoaJuridica}" title="TipoCliente">
<f:selectItems value="#{clienteController.tipoPessoaJuridica}" var="item" itemLabel="#{item.descricao}"/>
</h:selectOneMenu>
<h:outputLabel value="Telefone *" for="telefone1" />
<p:inputMask mask="(99) 9999 - 9999" id="telefone1" value="#{clienteController.pessoaJuridica.telefone1}" title="Telefone1" />
<h:outputLabel value="Telefone 2" for="telefone2" />
<p:inputMask mask="(99) 9999 - 9999" id="telefone2" value="#{clienteController.pessoaJuridica.telefone2}" title="Telefone2" />
<h:outputLabel value="Celular " for="celular" />
<p:inputMask mask="(99) 9999 - 9999" id="celular" value="#{clienteController.pessoaJuridica.celular}" title="Celular" />
<h:outputLabel value="Fax " for="fax" />
<p:inputMask mask="(99) 9999 - 9999" id="fax" value="#{clienteController.pessoaJuridica.fax}" title="Fax" />
<h:outputLabel value="Email *" for="email" />
<h:inputText id="email" value="#{clienteController.pessoaJuridica.email}" title="Email" />
<h:outputLabel value="CEP *" for="cep"/>
<p:autoComplete id="cep" value="#{clienteController.cep}" completeMethod="#{clienteController.complete}" selectListener="#{clienteController.handleCEPSelecionado}"
onSelectUpdate="siglaUf,cidade,bairro,logradouro,complemento"/>
<h:outputLabel value="UF *" for="siglaUf"/>
<h:inputText id="siglaUf" value="#{clienteController.enderecoClienteJuridico.siglaUF}" disabled="true"/>
<h:outputLabel value="Cidade *" for="cidade"/>
<h:inputText id="cidade" value="#{clienteController.enderecoClienteJuridico.cidade}" disabled="true"/>
<h:outputLabel value="Bairro *" for="bairro"/>
<h:inputText id="bairro" value="#{clienteController.enderecoClienteJuridico.bairro}"/>
<h:outputLabel value="Logradoudo *" for="logradouro"/>
<h:inputText id="logradouro" value="#{clienteController.enderecoClienteJuridico.logradouro}"/>
<h:outputLabel value="Complemento" for="complemento"/>
<h:inputText id="complemento" value="#{clienteController.enderecoClienteJuridico.complemento}"/>
<h:outputLabel for="numero" value="Número *"/>
<h:inputText id="numero" value="#{clienteController.enderecoClienteJuridico.numero}"/>
</h:panelGrid>
<p:commandButton action="#{clienteController.saveClienteJuridico}" update="selectRadio:mensagensErro clienteJuridico" image="salvar" value="Salvar" id="buttonJuridico"/>
</h:form>
</p:outputPanel>
</p:panel>
</center>
</f:view>[/code]