Como usar evento onblur , executar uma action JSF e voltar ao campo com Focus
29/10/2009
0
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
Posts
30/10/2009
Victor Lima
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
30/10/2009
Andrei Hirata
E na sua função do relatório USE uma função do tipo action..isto vai resolver seu problema.abraços
30/10/2009
Victor Lima
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
30/10/2009
Andrei Hirata
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
30/10/2009
Andrei Hirata
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
Clique aqui para fazer login e interagir na Comunidade :)