VALIDANDO UM h:inputText

Galera,

Eu tenho um cadastro no JSF que é composto por vários campos e muitos deles são referenciados por outras tabelas. Para facilitar o entendimento de vocês imagine duas simples tabelas. PAIS e ESTADO onde:

TABLE PAIS:
ID_PAIS
NOME

TABLE ESTADO
ID_ESTADO
PAIS
NOME

Com isso tenho o seguinte formulario: FORMULARIO DO ESTADO


 <h:outputText value="ESTADO"/>
 <h:inputText  id="ESTADO" value="#{asController.estadoCtr.idEstado}"/>

 <h:outputText value="NOME"/>
 <h:inputText  id="NOME" value="#{asController.estadoCtr.nome}"/>

  <h:outputText value="PAIS"/>
  <h:inputText  id="PAIS" value="#{asController.estadoCtr.pais}" required="true" onchange="alert('oi')" />

Eu gostaria de que no ONCHANGE do campo eu pudesse chamar um metodo do controller ( metodo SEARCHIDESTADO )
e validar o estado assim que o usuário digitasse o valor. Como seria para eu fazer isso ? Tem jeito de fazer isso e de preferencia usando
JSF ?

Obrigado amigos.

Você pode resolver isto usando Ajax4JSF:

&lt;h:inputText id="PAIS" value="#{asController.estadoCtr.pais}" required="true" &gt; &lt;a4j:support event="onchange" action="#{asController.validacao}"/&gt; &lt;/h:inputText&gt;

Ti amo !
Valew rs

Deu quase certo. Vejam:

Tenho o meu JSP assim:

<h:outputText value="#{bundle.textPerfil}"/>
<h:inputText  id="perfil" immediate="true" label="#{bundle.textPerfil}" value="#{asController.numberLovDummy}" required="true">
  <a:support event="onchange" action="#{asController.ckAsPerfil}" immediate="true" reRender="dspPerfil"/>
</h:inputText>                                
<h:outputText id="dspPerfil" value="#{asController.auxLovDummy}"/>

Metodo do Managed-Bean


   private int       numberLovDummy  = 0;
   
   public String ckAsPerfil(){
        
        asPerfilDAO perfilDAO = new asPerfilDAO();
        System.out.println("-------------------- "+this.getNumberLovDummy());
        this.asPerfilCtr      = perfilDAO.searchId(1);
        this.auxLovDummy      = this.getAsPerfilCtr().getDescricao();
        return "teste";
        
    }

   public int getNumberLovDummy() {
        return numberLovDummy;
    }

    public void setNumberLovDummy(int numberLovDummy) {
        this.numberLovDummy = numberLovDummy;
    }

Sempre que faço o onchange no campo ele dispara o metodo asController.ckAsPerfil. Reparem que o value do campo é um atributo do meu managed-bean chamado numberLovDummy.

O problema é que toda vez que efetuo o onchange o managed-bean não recebe o valor que eu coloquei no inputText. Está sempre vindo o valor zero.
O que está errado ?

Deixei o número 1 fixo para testar e mandei dar um System.out.print do numberLovDummy e ele só vem zero.
:frowning:

Obrigado

tenta tirar o immediate = true e colocar ajaxSingle=true (no a4j:support)

Olá ,

No código do seu Managed-Bean, tem a seguinte linha:

Tente alterar esse atributo para

e não inicialize ele com zero, deixe ele null mesmo. O JSF vai se encarregar de preencher o valor dele.
Acho que assim vai funcionar. Retire também o immediate = true.

Espero ter ajudado
att
[]s