JSF e focus - O velho problema[RESOLVIDO]

Boa tarde pessoal,

Meu problema é o seguinte:

Tenho um campo de texto onde o usuário preenche o código, e eu carrego uma descrição em outro campo. Ele tambem pode escrever a descricao e eu busco o código.

Se eu digito um código que nao existe, o sistema dá uma mensagem e o foco permanece no campo. O problema é que se o código existe, ele tambem permanece no campo, em vez de ir para o outro.

Gostaria de algo mais ou menos assim: se der erro o foco permanece, senão o foco vai pro próximo campo.

Estou setando o foco assim:

<a4j:support focus="idDoCampo" event="evento" action="acao"/>

Detalhes: A coisa mais importante do sistema para o usuário é o FOCO!

Valeu.

Como voce verifica se o código existe? É no bean e ele mesmo ja exibe a msg de erro?

Se o foco é tão importante assim ja pensou na possibilidade de utilizar El no ‘focus’ ? Acredito que pelo fato de existir apenas dois campos fique facil essa transição com EL.
Ou tu pode utilizar uma função JS que vai verificar se foi sucesso ou fracasso. E fazer a devida transição de foco.

é no bean mesmo. vou no banco e vejo se existe o registro. Se nao existir ele da mensagem.

Vou testar a el. Ja volto com a resposta.

Com EL não funcionou. Não seta o foco em lugar nenhum.

Com el ficou assim:

focus="#{view.testeFocus}"
public String getTesteFocus() {
	return "dsCartorio";
}

Vou tentar fazer a4j:jsFunction agora.

Então… tambem nao funcionou!

Alguma outra solução?

Qual sua versão do A4J? Se não me engano algumas antigas não possuiam o atributo focus.

https://ajax4jsf.dev.java.net/nonav/documentation/ajax-documentation/entire.html#d0e1657
.
.
.
http://docs.jboss.org/richfaces/latest_3_3_X/en/tlddoc/a4j/support.html

Como vc implementou a função JS? Poste o código aqui.

O elemento focus existe.

E a função JS para falar a verdade nem implementei. Não consegui chegar numa maneira de chamar ela para funcionar! =/

Bom, fazendo uns testes aqui pela 2º vez, consegui fazer com o atributo focus do a4j.

ficou assim:

<a4j:support ajaxSingle="true" event="onchange" focus="#{view.foco}"

onde foco é uma String com o id do componente.

Vi que da outra vez que tentei nao funcionou porque eu nao tinha definido um valor padrao pra String foco.
Dessa vez deixei um valor padrao, e caso necessario eu mudo esse valor na View de acordo com minha condição.

Vou fazer assim mesmo.

Valeu pela ajuda. Abraco