Olá pessoal, boa tarde.
Estou tendo problemas ao efetuar atualização de componentes que não são renderizados na tela, e em certo momento o estado destes passam para
serem exibidos, porém os mesmos não são renderizados novamente.
Segue o exemplo abaixo: Possuo um Radio onde dependendo do tipo de pessoa, física ou jurídica, é exibido o seu respectivo painelGrid.
<h:outputLabel value="#{msg['cliente.tipoCliente']}" />
<h:selectOneRadio id="sorTipoCliente" required="true"
requiredMessage="Tipo Cliente requerido"
readonly="#{clienteController.somenteLeitura}"
valueChangeListener="#{clienteController.recuperaClienteSelecionado}">
<f:selectItem itemLabel="Física" itemValue="0" />
<f:selectItem itemLabel="Jurídica" itemValue="1" />
<f:ajax event="change" render="pgrCpf pgrCnpj" />
</h:selectOneRadio>
<h:inputHidden />
<p:message for="sorTipoCliente" showDetail="true" showSummary="false" />
<h:panelGrid id="pgrCpf" columns="2" rendered="#{clienteController.exibeCpf}">
<h:outputLabel value="#{msg['cliente.cpf']}" />
<p:inputMask id="iptCpf" value="#{clienteController.clienteSelecionado.nuCpf}"
required="true" mask="[CPF removido]" maxlength="11" size="14"
onblur="if (!validarCPF(this)) {
document.getElementById('form:iptCpf').focus();
}"
requiredMessage="#{msg['cliente.cpf.requerido']}"
readonly="#{clienteController.somenteLeitura}" />
<h:inputHidden />
<h:message for="iptCpf" styleClass="fonteAlerta" showDetail="true" showSummary="false" />
</h:panelGrid>
<h:inputHidden />
<h:panelGrid id="pgrCnpj" columns="2" rendered="#{clienteController.exibeCnpj}">
<h:outputLabel value="#{msg['cliente.cnpj']}" />
<p:inputMask id="iptCnpj" value="#{clienteController.clienteSelecionado.nuCnpj}" size="19" maxlength="14"
mask="99.999.999/9999-99" required="true" requiredMessage="#{msg['cliente.cnpj.requerido']}"
readonly="#{clienteController.somenteLeitura}" />
<h:inputHidden />
<h:message for="iptCnpj" styleClass="fonteAlerta" showDetail="true" showSummary="false" />
</h:panelGrid>
Porém a tag <f:ajax não funciona ao executar um render no componente com o rendered=false, exibindo que o mesmo não foi encontrado no xhtml.
Já tentei utilizar a tag ><p:ajax event=“change” update=“pgrCpf pgrCnpj” />, neste caso não apresenta o mesmo erro do f:ajax, mas o componente
não é atualizado, exibindo este conforme opção selecionada no Radio.
Alguem tem alguma idéia de como resolver essa questão? Fica aí o desafio… Não encontrei nada parecido na net com componentes não renderizados.
Na versão 1.2 era simplesmente utilizar o <a4j:support era simples, sendo utilizado ><a4j:support event=“change” reRender=“idDoComponente” />
Abraços,
Atenciosamente,
Lessandro
