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!
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.
Flavio_Almeida
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
A
andre2k2
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
sbb_20
só tem o atributo rendered esse reRender não tem no selectOneRadio!!
S
sbb_20
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:selectOneRadiovalue="#{ClienteMB.selecaoTipoCliente}"styleClass="textoFormulario"><f:selectItemitemValue="PF"itemLabel="#{msg.PessoaFisica}"/><f:selectItemitemValue="PJ"itemLabel="#{msg.PessoaJuridica}"/><f:ajaxevent="change"render="a b c d"/></h:selectOneRadio><h:outputTextid="a"value="Nome: "styleClass="textoDica"rendered="#{ClienteMB.tipoFormularioPF}"/><h:inputTextid="b"value="#{ClienteMB.cliente.tipoCliente}"rendered="#{ClienteMB.tipoFormularioPF}"/><h:outputTextid="c"value="Razão Social: "styleClass="textoDica"rendered="#{ClienteMB.tipoFormularioPJ}"/><h:inputTextid="d"value="#{ClienteMB.cliente.tipoCliente}"rendered="#{ClienteMB.tipoFormularioPJ}"/>
A
andre2k2
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.
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…