Bom dia senhores do guj… estou com uma duvida… tenho esse painel que rederiza se pessoa fisica ou juridica o painel de baixo…
<a4j:region>
<td width="60%" colspan="2">
<h:selectOneRadio id="tipoPessoa" value="#{cadastroPessoa.pessoa.tipoPessoa}" styleClass="formCadastroPessoaLabel" >
<f:selectItem id="pessoaFisica" itemLabel="Pessoa Fisica" itemValue="pessoaFisica" />
<f:selectItem id="pessoaJuridica" itemLabel="Pessoa Juridica" itemValue="pessoaJuridica"/>
<a4j:support event="onclick" action="#{cadastroPessoa.tipoCadastroPessoa}" reRender="panelExternoPF, panelExternoPJ" />
</h:selectOneRadio>
</td>
<td width="40%"><h:message for="tipoPessoa" styleClass="msgErro" /></td>
</a4j:region>
// --------------------- Metodo para renderizar painel------------------------------------
public void tipoCadastroPessoa(){
if(pessoa.getTipoPessoa().equals("pessoaJuridica")){
tipoPessoa = true;
}
else{
tipoPessoa = false;
}
}
Esse é meu painel de pessoa juridica
<!--========================================Formulário PessoaJuridica==========================================-->
<a4j:outputPanel id="panelExternoPJ">
<a4j:outputPanel id="panelPJ" rendered="#{cadastroPessoa.tipoPessoa}" layout="block" >
<table width="100%">
<tr>
<td width="30%"><h:outputLabel value="CNPJ:" styleClass="formCadastroPessoaLabel" /></td>
<td width="30%">
<h:inputText id="cnpj" maxlength="18" value="#{cadastroPessoa.pj.cnpj}" styleClass="formCadastroPessoaInput" >
<rich:jQuery selector="#cnpj" query="mask('99.999.999/9999-99')" timing="onload" />
</h:inputText>
</td>
<td width="40%"><h:message for="cnpj" styleClass="msgErro" /></td>
</tr>
<tr>
<td width="30%"><h:outputLabel value="Razão Social:" styleClass="formCadastroPessoaLabel" /></td>
<td width="30%"><h:inputText id="razaoSocial" value="#{cadastroPessoa.pj.razaoSocial}" styleClass="formCadastroPessoaInput" /></td>
<td width="40%"><h:message for="razaoSocial" styleClass="msgErro" /></td>
</tr>
<tr>
<td width="30%"><h:outputLabel value="Nome Fantasia:" styleClass="formCadastroPessoaLabel" /></td>
<td width="30%"><h:inputText id="nomeFantasia" value="#{cadastroPessoa.pj.nomeFantasia}" styleClass="formCadastroPessoaInput" /></td>
<td width="40%"><h:message for="nomeFantasia" styleClass="msgErro" /></td>
</tr>
<tr>
<td width="30%"><h:outputLabel value="Inscricão Estadual:" styleClass="formCadastroPessoaLabel" /></td>
<td width="30%">
<h:inputText id="inscricaoEstadual" maxlength="10" value="#{cadastroPessoa.pj.inscricaoEstadual}" styleClass="formCadastroPessoaInput" >
<rich:jQuery selector="#inscricaoEstadual" query="mask('99.999.999')" timing="onload" />
</h:inputText>
</td>
<td width="40%"><h:message for="inscricaoEstadual" styleClass="msgErro" /></td>
</tr>
</table>
</a4j:outputPanel>
</a4j:outputPanel>
e eu tenho no mbpessoa medodos que fazem a validação dos campos… esse é um pedaço…
//------------------------ Pessoa ----------------------------
if (pessoa.getNome().length() < 3) {
context.addMessage("formCadastroPessoa:nome", new FacesMessage(FacesMessage.SEVERITY_ERROR , "Nome incompleto!", "Favor informar seu nome completo!"));
dadosValidos = false;
//-------------------- Pessoa Juridica -------------------------
} else if (pj.getCnpj().length() < 18) {
context.addMessage("formCadastroPessoa:cnpj", new FacesMessage(FacesMessage.SEVERITY_ERROR , "CNPJ incompleto!", "Favor informar seu CNPJ!"));
dadosValidos = false;
} else if (! ValidaCnpj.validaCnpj(pj.getCnpj())) {
context.addMessage("formCadastroPessoa:cnpj", new FacesMessage(FacesMessage.SEVERITY_ERROR , "CNPJ incompleto!", "Favor informar seu CNPJ!"));
dadosValidos = false;
}
o que acontece… quando eu submeto o formulário renderiza as mensagens de validação, e o campo que estava renderizado (pessao juridica) volta para pessoa fisica, mas marcado com pessoa juridica, pergunta, tem algum jeito de manter no bean isso(só esse metodo) como se fosse uma sessão…
// --------------------- Metodo para renderizar painel------------------------------------
public void tipoCadastroPessoa(){
if(pessoa.getTipoPessoa().equals("pessoaJuridica")){
tipoPessoa = true;
}
else{
tipoPessoa = false;
}
}
pois ele perde o valor quando submeto o form…
se eu botar escopo de sessão o form funciona normalmente, vale a pena mudar o escopo do meu bean de cadastro de usuario para escopo de sessão???
e se eu colocar como sessão tem como eu dar um clean na sessão quando o cadastro for feito?? por que em sessão se eu cadastrar o formulário fica todo preenchido msm depois de salvar as informações, mesmo depois de sair da pagina de cadastro, voltando na pagina de cadastro tá tudo preenchido? pois o escopo está como sessão…