a4j:support >> h:selectOneRadio

3 respostas
B

Boa noite senhores, estou com um problema...

tenho um selectOneRadio com um a4j:suport...

<a4j:region>
	    <h:selectOneRadio id="tipoPessoa" value="#{cadastroPessoa.target}">
	 	<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="panelPF, panelPJ" />  
	    </h:selectOneRadio>
	 </a4j:region>

meu bean

public void tipoCadastroPessoa(){
		System.out.println(target);
		if(target.equals("pessoaJuridica")){
			tipoPessoa = true;
		} 
		else{
			tipoPessoa = false;
		}
		System.out.println(tipoPessoa);
	}

e os 2 paineis, a4j:outputpanel...

<!--========================================Formulário PessoaFisica==========================================-->																					
	<a4j:outputPanel id="panelPF" rendered="#{!cadastroPessoa.tipoPessoa}" layout="block">
																																										
		<h:outputLabel value="CPF:" />
		    <h:inputText id="cpf" maxlength="14" value="#{cadastroPessoa.pf.cpf}">
		    <rich:jQuery selector="#cpf" query="mask('[CPF removido]')"	timing="onload" />
		</h:inputText>																					
																																			
		<h:outputLabel value="Data de Nascimento:" />
		<rich:calendar id="datanascimento" enableManualInput="true" inputClass="rich-calendar-input" datePattern="dd/MM/yyyy" popup="true" value="# cadastroPessoa.pf.datanascimento}" >
		    <rich:ajaxValidator event="onblur" />
		 </rich:calendar>						
		<rich:jQuery selector=".rich-calendar-input" timing="onload" query="mask('99/99/9999')" />	
																																																												
		<h:outputLabel value="Sexo:" />
		<h:selectOneMenu id="sexo" value="#{cadastroPessoa.pf.sexo}">
		    <f:selectItem id="nulo" itemLabel="Selecione o sexo" itemValue="nulo" />
		    <f:selectItem id="masculino" itemLabel="Masculino" itemValue="M" />
		    <f:selectItem id="feminino" itemLabel="Feminino" itemValue="F" />
		</h:selectOneMenu>	
																																			
	</a4j:outputPanel>
																													
<!--======================================Formulário PessoaJuridica========================================-->																		 
<a4j:outputPanel id="panelPJ" rendered="#{cadastroPessoa.tipoPessoa}" layout="block" >
																																									
    <h:outputLabel value="CNPJ:" />
    <h:inputText id="cnpj" maxlength="18" value="#{cadastroPessoa.pj.cnpj}">
        <rich:jQuery selector="#cnpj" query="mask('99.999.999/9999-99')"	timing="onload" />
    </h:inputText>	
																						
    <h:outputLabel value="Razão Social:" />
    <h:inputText id="razaoSocial" value="#{cadastroPessoa.pj.razaoSocial}" />
																						
    <h:outputLabel value="Nome Fantasia:" />
    <h:inputText id="nomeFantasia" value="#{cadastroPessoa.pj.nomeFantasia}" />
																						
    <h:outputLabel value="Inscricão Estadual:" />
    <h:inputText id="inscricaoestadual" maxlength="10" value="#{cadastroPessoa.pj.inscricaoEstadual}">
        <rich:jQuery selector="#inscricaoestadual" query="mask('99.999.999')" timing="onload" />
    </h:inputText>	
																						
</a4j:outputPanel>

Bom, na teoria, deveria renderizar o painel, para pessoaFisica ou pessoaJuridica, conforme é clicado no campo, eu dei esse println e quando clico os valores vem certos, porem não sei o porque não renderiza...

Alguem pode me ajudar?

3 Respostas

R

Teu problema está aqui:

&lt;a4j:outputPanel id="panelPF" rendered="#{!cadastroPessoa.tipoPessoa}" layout="block"&gt;

Vc não consegue dar reRender num componente com renderização dinâmica(marcado com ‘rendered’).

Solução:coloque um painel fora dos a4j:outputPanel que tem rendered e dê o reRender nesses panels:

Ficaria assim:

&lt;a4j:region&gt;  
        &lt;h:selectOneRadio id="tipoPessoa" value="#{cadastroPessoa.target}"&gt;  
        &lt;f:selectItem id="pessoaFisica" itemLabel="Pessoa Fisica" itemValue="pessoaFisica"/&gt;  
        &lt;f:selectItem id="pessoaJuridica" itemLabel="Pessoa Juridica" itemValue="pessoaJuridica"/&gt;  
            &lt;a4j:support event="onclick" action="#{cadastroPessoa.tipoCadastroPessoa}" reRender="panelExternoPF, panelExternoPJ" /&gt;    
        &lt;/h:selectOneRadio&gt;  
     &lt;/a4j:region&gt;
&lt;!--========================================Formulário PessoaFisica==========================================--&gt; 
   &lt;a4j:outputPanel id="panelExternoPF"&gt;                                                                                   
    &lt;a4j:outputPanel id="panelPF" rendered="#{!cadastroPessoa.tipoPessoa}" layout="block"&gt;  
                                                                                                                                                                          
        &lt;h:outputLabel value="CPF:" /&gt;  
            &lt;h:inputText id="cpf" maxlength="14" value="#{cadastroPessoa.pf.cpf}"&gt;  
            &lt;rich:jQuery selector="#cpf" query="mask('[CPF removido]')"  timing="onload" /&gt;  
        &lt;/h:inputText&gt;                                                                                      
                                                                                                                                              
        &lt;h:outputLabel value="Data de Nascimento:" /&gt;  
        &lt;rich:calendar id="datanascimento" enableManualInput="true" inputClass="rich-calendar-input" datePattern="dd/MM/yyyy" popup="true" value="# cadastroPessoa.pf.datanascimento}" &gt;  
            &lt;rich:ajaxValidator event="onblur" /&gt;  
         &lt;/rich:calendar&gt;                       
        &lt;rich:jQuery selector=".rich-calendar-input" timing="onload" query="mask('99/99/9999')" /&gt;      
                                                                                                                                                                                                                                                  
        &lt;h:outputLabel value="Sexo:" /&gt;  
        &lt;h:selectOneMenu id="sexo" value="#{cadastroPessoa.pf.sexo}"&gt;  
            &lt;f:selectItem id="nulo" itemLabel="Selecione o sexo" itemValue="nulo" /&gt;  
            &lt;f:selectItem id="masculino" itemLabel="Masculino" itemValue="M" /&gt;  
            &lt;f:selectItem id="feminino" itemLabel="Feminino" itemValue="F" /&gt;  
        &lt;/h:selectOneMenu&gt;      
                                                                                                                                              
    &lt;/a4j:outputPanel&gt;
&lt;/a4j:outputPanel&gt;
R

Aqui tem uma explicação muito boa sobre esse problema:
http://www.rponte.com.br/2010/12/01/problema-do-rendered-dinamico-com-jsf/

B

Show, muito obrigado raf4ever! funcionou 100%!

Criado 12 de agosto de 2011
Ultima resposta 13 de ago. de 2011
Respostas 3
Participantes 2