navegação com <h:selectOneRadio> JSF 2.0

Desculpe se minha dúvida for besta mas estou quebrando a cabeça com ela, se alguém puder dar uma luz agradeço!

Seguinte, tenho o código abaixo:

<h:selectOneRadio value="#{ClienteMB.selecaoTipoCliente}" styleClass=“textoFormulario” >
<f:selectItem itemValue=“PF” itemLabel="#{msg.PessoaFisica}"/>
<f:selectItem itemValue=“PJ” itemLabel="#{msg.PessoaJuridica}"/>
</h:selectOneRadio>

Gostaria que ao clicar em um dos radios, por exemplo PJ fosse carregado na tela o form de cadastro para PJ e o mesmo vale para PF

acontece que se eu alterar o value="#{ClienteMB.selecaoTipoCliente}" por value="#{ClienteMB.carregaFormularioCerto}" da erro porq o campo não é uma propriedade!!

O que fazer???

procurei nos posts mais antigos mas nao achei, se alguem souber de um e quizer indicar agradeço!

Valeuwwww

Eu faço colocando os dois formularios na tela, e renderizando conforme o atributo selecionado. faz isso com uma variavel boolean no Bean controlando qual deles deve ser renderizado e atualiza a pagina( por ajax ou normal) sempre que selecionar o valor.

A essência da solução é a seguinte:

Quando alterar a combo, evoque uma action, no método desta action, com base no valor selecionado pelo usuário (ClienteMB.selecaoTipoCliente), faça uma navegação implícita retornando o nome da página.

Você pode usar o f:ajax para executar a action no eventoOnchange.

Usamos richfaces, mas a idéia não muda muito.

Abraço

Crie os campos de PF e coloque um atributo render verificando o tipo de pessoa, algo assim

render="#{ClienteMB.selecaoTipoCliente == ‘PF’}"

Assim os campos com esse render serão renderizados apenas se o valor de ClienteMB.selecaoTipoCliente for igual a ‘PF’.

Faça o mesmo mas para os campos de PJ.

atribua no seu selectOneRadio um comando no atributo reRender, passando os elementos que deseja renderizar/esconder após a seleção do combo.

Acho que isso vai funcionar.

só tem o atributo rendered esse reRender não tem no selectOneRadio!!

valew pelas dicas, utilizei render e rendered para exibir os itens de formulario pertinentes ao tipo de cliente, porem esta dando um erro no ajax

qndo a pagina carrega pela primeita vez é criado os elementos para PF, so que qndo eu seleciono PJ o ajax nao encontra os elementos c e d por não serem renderizados no inicio… acho que é isso, alguem sabe como resolver?

           <h:selectOneRadio value="#{ClienteMB.selecaoTipoCliente}" styleClass="textoFormulario">
                <f:selectItem itemValue="PF" itemLabel="#{msg.PessoaFisica}"/>
                <f:selectItem itemValue="PJ" itemLabel="#{msg.PessoaJuridica}"/>
                <f:ajax event="change" render="a b c d"/>
            </h:selectOneRadio>
            <h:outputText id="a" value="Nome: " styleClass="textoDica" rendered="#{ClienteMB.tipoFormularioPF}"/>
            <h:inputText id="b" value="#{ClienteMB.cliente.tipoCliente}" rendered="#{ClienteMB.tipoFormularioPF}"/>
            <h:outputText id="c" value="Razão Social: " styleClass="textoDica" rendered="#{ClienteMB.tipoFormularioPJ}"/>
            <h:inputText id="d" value="#{ClienteMB.cliente.tipoCliente}" rendered="#{ClienteMB.tipoFormularioPJ}"/>

Veja bem,
O render aceita apenas uma expressao cujo resultado seja Booleano. Ele diz se o elemento será ou nao renderizado.
O reRender é que diz os elementos que você deseja reavaliar após determinada ação. Esse atributo aceita uma lista de elementos separada por virgula.

então brother estou fazendo o seguinte…

<h:selectOneRadio value="#{ClienteMB.selecaoTipoCliente}" styleClass=“textoFormulario”>
<f:selectItem itemValue=“PF” itemLabel="#{msg.PessoaFisica}"/>
<f:selectItem itemValue=“PJ” itemLabel="#{msg.PessoaJuridica}"/>
<f:ajax event=“change” render=“a b c d”/>
</h:selectOneRadio>
<h:outputText id=“a” value=“Nome: " styleClass=“textoDica” rendered=”#{ClienteMB.tipoFormularioPF}"/>
<h:inputText id=“b” value="#{ClienteMB.cliente.tipoCliente}" rendered="#{ClienteMB.tipoFormularioPF}"/>
<h:outputText id=“c” value=“Razão Social: " styleClass=“textoDica” rendered=”#{ClienteMB.tipoFormularioPJ}"/>
<h:inputText id=“d” value="#{ClienteMB.cliente.tipoCliente}" rendered="#{ClienteMB.tipoFormularioPJ}"/>

as variaveis do ClienteMB são inicializadas com os seguintes valores
tipoFormularioPF = true
tipoFormularioPJ = false

ate ai acho que blz… só carrega de inicio os itens do form p PF

só q ao clicar no radiobutton pj, ele tenta executar isso <f:ajax event=“change” render=“a b c d”/> só que como os elementos c e d nao foram renderizados na pagina ele da erro. preciso que ao clicar nos radios os itens sejam abilitados e desabilitados…