Array
(
)

Como usar evento onblur , executar uma action JSF e voltar ao campo com Focus

Victor Lima
   - 29 out 2009


 Galera,

 To fritando para fazer uma tela que tem um input Text   e digitar um valor neste campo.

 ao sair no evento onblur  chamar uma action que imprime um relatorio direto para impressora e retornar ao mesmo campo para repetir a rotina com outro numero de pesquisa.

 Tentei dessa forma:

 <h:outputText  styleClass="rich-label" value="Entre com os dados:" />
                        <h:inputText  label="Dados" size="15" name="meuInput"  id="meuinput"  required="true" value="#{etiquetasController.num_notafiscal}"
                         event="onblur" onblur="submit()"  >
                             <a4j:support event="onkeyup" action="#{etiquetasController.executarEtiqueta}" immediate="true" requestDelay="3000"  focus="meuinput" reRender="etiquetas,etiqueta"  ajaxSingle="true"  />
                        
                            <f:validateLength minimum="6" maximum="15" />

                        </h:inputText>
 Ele volta para o campo mas nao executa o relatorio e da um erro porque acredito que deva ter que fazer um submit, mas se dou um submit()  ai que nao volta para o campo.

To usando  para o submit se atraves do ajax mas mesmo assim perde o foco. so funciona sem submit.

e o relatorio nada , nao imprimi  so se eu colocar um link <a4j:commandLink value="imprimir"  action="#{etiquetasController.executarEtiqueta}" focus="meuinput" />
 mas será utilizado um leito de codigo de barra uma pistola magnetica, ela nao vai clicar nesse link.
 
 Não é possivel que não exista algo parecido para web JSF.
 
 da uma força ai por favor, ja tem uma semana que estou nisso.

obrigado

Victor




Victor Lima
   - 30 out 2009


 Bom dia.


 Consegui fazer imprimir após sair do campo e depois de dar submit. Ao pressionar TAB p campo perde o foco e envia o relatório direto para impressora. Veja como fiz.

 <h:outputText  styleClass="rich-label" value="Entre com os dados:" />
 <h:inputText  label="Dados" size="15" name="meuInput"  id="meuinput"  required="true" value="#{etiquetasController.num_notafiscal}" onblur="submit()"   reRender="etiquetas" >
<a4j:support event="onchange"  action="#{etiquetasController.executarEtiqueta}" immediate="true"  focus="meuinput" reRender="etiquetas,etiqueta"  ajaxSingle="true"  />
<f:validateLength minimum="6" maximum="15" />
</h:inputText>

Tudo isso esta dentro de um form assim:

<a4j:form ajaxSubmit="true" id="etiqueta"  reRender="etiquetas">

// codigo acima

</a4j:form>

Repare que no event onchange e chama a action action="#{etiquetasController.executarEtiqueta}", coloquei para dar focus="meuinput", mas isso não funciona, só funciona se eu tirar do inputTex a linha onblur="submit()"  mas se tiro essa linha não chama a action e não imprime o relatório.

O Relatório só vai ser executado se eu submeter a página.

O focus retornará para o campo se eu não submeter a página.

Eu preciso que os dois entrem em acordo e passe a funcionar , faz o submit m imprime o relatório e retorna ao campo.

Se alguem poder me ajudar , ficarei grato.

Victor

 

0
|
0

Andrei Hirata
   - 30 out 2009

Entao cara..ao invez de usar ACTIOn use action listener..

E na sua função do relatório USE uma função do tipo action..isto vai resolver seu problema.abraços

0
|
0

Victor Lima
   - 30 out 2009

Bom dia,

 Ja tentei,  não deu.

 Na verdade o relatório ta imprimindo normal, eu quero agora apos o submit que esta sendo dado voltar ao campo com um focus.

obrigado

Victor

0
|
0

Andrei Hirata
   - 30 out 2009

Bom.minha ultima solução.Vc terá que criar uma função dentro de uma classe para focalizar seu EDIT.

Após a chamada da função de impressao relatorio, chame outra função de qualquer ,sendo que nela é que vai estar sua função para focalizar.

Não coloquei exemplo.se não entender oq estou dizendo eu passo um exemplo para vc

0
|
0

Victor Lima
   - 30 out 2009



 Desculpe mas não entendi.

obrigado

Victor

0
|
0

Andrei Hirata
   - 30 out 2009

Ou....Tenta forçar o focus.Escrevendo 2 vezes.. Após o comando de imprimir etiqueta no seu jsf
faca outro comando apenas com comando ajax usando a funcao FOCUS

Ou seja.explicando

NA PRIMEIRA VC DA UM SUBMITE NORMAL SEM SER AJAX
E na segunda vc executa usando ajax SEM FUNCAO relatorio..

Fiz um teste baba aqui e funciono.

Ele executa a funcao de teste
e depois é focalizado NA MARRA>kakaka

0
|
0