GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Como fazer selectOneRadio com rendered dinâmico - JSF?

java
programação
ajax
jsf
Tags: #<Tag:0x00007fbf230c5ed8> #<Tag:0x00007fbf230c5d98> #<Tag:0x00007fbf230c5c58> #<Tag:0x00007fbf230c5b18>

#1

Olá! Sou novo aqui no GUJ, então perdoem algum erro.
O meu problema é seguinte: preciso realizar um rendered dinâmico de inputText quando selecionar um determinado botão radio na minha página de pesquisa, mas não está eficiente.
Eu tentei usar ajax, mas ele só altera o inputText quando dou um “submit” na minha página.
Vou postar parte do código aqui:

    <h:selectOneRadio value="#{pesquisarMB.filtro}" required="true">
        <h:ajax event="click" listener="#{pesquisarMB.habilitar()}"/>
        <f:selectItem itemLabel=" Matricula" itemValue="1"/>
        <f:selectItem itemLabel=" Nome" itemValue="2" />
     </h:selectOneRadio>

     <h:inputText value="#{pesquisarMB.pesquisa}" rendered="#{pesquisarMB.mostrarMat}" id="edPesquisaMat" onkeypress="mascara(this, soNumeros)">
        <f:validateLength minimum="1"/>
     </h:inputText>
     <h:inputText value="#{pesquisarMB.pesquisa}" rendered="#{pesquisarMB.mostrarNome}" id="edPesquisaNome" onkeypress="mascara(this, soLetras)">
        <f:validateLength minimum="1"/>
     </h:inputText>
     <h:commandButton action="#{pesquisarMB.realizarPesquisa()}" value="Buscar"></h:commandButton>

#2

Eu estou usando o <p:ajax, sendo assim eu faria isso: incluiria process=@this e update com o ID do componente que esta contendo todos os componentes. Ok?


#3

Deu certo, @andrebmarinho! Só tive que criar um p:panel com o ID contendo os componentes. Obrigadão!


#4

Valeu!!! @Rafael_Lopes1, apenas para deixar como referência pra galera que tiver a mesma dificuldade, posta o código que funcionou legal.


#5

Desculpa a longa demora!
Ficou assim:

<h:selectOneRadio value="#{pesquisarMB.filtro}" required="true" >
    <f:selectItem itemLabel=" Matricula" itemValue="1" />
    <f:selectItem itemLabel=" Nome" itemValue="2"/>
    <p:ajax event="change" process="@this" update="pesquisa" listener="#{pesquisarMB.habilitar()}" />
</h:selectOneRadio>

<p:panel id="pesquisa">
    <h:inputText value="#{pesquisarMB.pesquisa}" rendered="#{pesquisarMB.mostrarMat}" id="edPesquisaMat"></h:inputText>
    <h:inputText value="#{pesquisarMB.pesquisa}" rendered="#{pesquisarMB.mostrarNome}" id="edPesquisaNome"></h:inputText>
    <h:commandButton value="Buscar" action="#{pesquisarMB.realizarPesquisa()}" />
 </p:panel>

E no meu MB ficou basicamente assim:

private int filtro;
public void habilitar(){
    if(filtro == 1){
        mostrarMat = true;
        mostrarNome = false;
    } else if(filtro == 2){
        mostrarMat = false;
        mostrarNome = true;
    }
}