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>
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?
Deu certo, @andrebmarinho! Só tive que criar um p:panel com o ID contendo os componentes. Obrigadão!
1 curtida
Valeu!!! @Rafael_Lopes1, apenas para deixar como referência pra galera que tiver a mesma dificuldade, posta o código que funcionou legal.
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;
}
}
2 curtidas