Focus no richfaces

10 respostas
joaosavio
...
<rich:panel>           
       <p>
              <h:outputLabel value="Nome: "/>
              <h:inputText id="inputText" value="#{consultaPessoa.nome}">
                   <a4j:support event="onkeyup" focus="inputText" action="#{consultaPAction.buscaPorNome}"/> 
              </h:inputText>
       </p>                                       
</rich:panel>
...

Olá pessoal, eu queria que depois do evento, o foco continuasse no “h:inputText”, mas nao ta funcionando.

O método buscaPorNome retorna a mesma página.

10 Respostas

2

Cara, o método que você chama no evento ta retornando como?

return “”;

ou

return"Nome da página no faces";

Porque você tem que retornar assim -> return “”;

ou até mesmo chamar um método void.

joaosavio

vou tentar retornando “”

mas para o JSF qual a diferenca?

2

Cara, a diferença é que retornando “”, você continua na mesma página eu não altera o focus, se vc chamar a página com o nome dela do faces, ele carrega ela denovo e muda o focus.

Depois avisa aqui se vc conseguiu.

joaosavio

quando retorno “”, o evento nao ocorre se eu nao clicar em “enter”!

2

cara, muito estranho. Eu uso esse componente com o mesmo evento que você, e o método que ele chama retorna “”, sem problemas. Dê uma olhada no seu form, se tem mais alguma coisa relevante que possa estar dando problema como painéis desnecessários e alguma coisa do tipo. Se preciso, faça uma página separada, e uma classe também, que teste esse recurso isoladamente.

t+

joaosavio

olá

deu certo

o problema agora é que o evento nao pode fazer nada se nao estiver escrito nada. Como fazer isso?

Porque se apago a string dá erro:

javax.servlet.ServletException: #{consultaPAction.buscaPorNome}: org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of model.beans.PessoaVO.egresso

root cause

javax.faces.FacesException: #{consultaPAction.buscaPorNome}: org.hibernate.PropertyAccessException: Null value was assigned to a property of primitive type setter of model.beans.PessoaVO.egresso

[code]root cause
2

cara, posta seu código com o método pra eu dar uma olhada. Você vai ter que tratar essa excessão para funcionar, mas depende de como o seu método está funcionando.

Mas o que você fez para funcionar?

joaosavio

dei um reRender na tabela

<p>
    <h:outputLabel value="Nome: "/>
    <h:inputText id="inputText" value="#{consultaPessoa.nome}">
         <a4j:support event="onkeyup" focus="inputText" action="#{consultaPAction.buscaPorNome}" reRender="tabela"/> 
    </h:inputText>
</p>

meu método

@Override
    public String buscaPorNome() {
        BConsultaPessoa BConPes = new BConsultaPessoa();
        BConPes = (BConsultaPessoa) ManagedBean.getContextInfo("#{consultaPessoa}"); //pego o bean da sessão
        tabela = new ArrayList<PessoaVO>();
        tabela = pessoaC.buscarSubstring(BConPes.getNome());

        n = tabela.size();

        if (n > 0) {
            for (int i = 0; i < n; i++) {
                tabela.get(i).setK(i + 1);     //seta o contador da tabela           
            }
        }

        BConsultaPessoa BConP = new BConsultaPessoa();
        BConP.setNome(BConPes.getNome());
        BConP.setTabela(tabela);
        BConP.setN(n);
        ManagedBean.setContextInfo("#{consultaPessoa}", BConP); //seto o bean da sessao

        return "";
    }

Como posso tratar essa excessão?

2

No método você pode fazer alguma coisa do tipo:

public String buscaPorNome() {  
         BConsultaPessoa BConPes = new BConsultaPessoa();  
         BConPes = (BConsultaPessoa) ManagedBean.getContextInfo("#{consultaPessoa}"); //pego o bean da sessão
         if(BConPes.getNome.equals("") || BConPes.getNome == null) //faça um if para tratar a excessão, deve dar certo.
               return null;

         ...............
         
}

esse teste faz com que se o valor no input for nulo ou “” (vazio)" o método retorna null, sem executar o script. Isso deve resolver seu problema.

joaosavio

deu certo somente assim:

try {
            tabela = pessoaC.buscarSubstring(BConPes.getNome());
        }
        catch (Exception e) {
            return "";
        }

Abraços e valeu

Criado 27 de agosto de 2008
Ultima resposta 1 de set. de 2008
Respostas 10
Participantes 2