Pessoal,
preciso executar uma ação em um (p:commandButton) automaticamente. Este botão será acionado pelo usuário pelo menos uma vez, depois ele tem que executar por exemplo 5 vezes sem que o usuário click nele. Aguem sabe como posso implementar?
Pessoal,
preciso executar uma ação em um (p:commandButton) automaticamente. Este botão será acionado pelo usuário pelo menos uma vez, depois ele tem que executar por exemplo 5 vezes sem que o usuário click nele. Aguem sabe como posso implementar?
javascript possui um “simulador” de evento click e, com o timeout, você consegue fazê-lo (mas é gambiarra).
Creio que usar um ajax seria de melhor tom.
Teria como postar como posso utilizar ele para executar o botão. Obrigado.
Sim, teria.
Mas você terá que pesquisar sobre os eventos que comentei primeiramente.
Montar a função javascript e mostrá-la, caso não consiga fazer.
O que acha?
Você aprende e resolve e eu não faço trabalho dos outros, sem ganhar nada por essa tarefa.
se voce estiver utilizando primefaces poderia usar um pool com 1 intervalo de 5 e iniciar ele ao clicar no botão
da 1 olhada:
O problema é que não sei exatamente quantas vezes este botão terá que ser acionado. Ele pode ser acionado n vezes.
Mas existe uma regra que gere esse numero de vezes que o método deve executar?
se não ouver gera no bean um numero aleatorio com limites e usa ele no intervalo do poll
Só acrescentando, o usuário vai clicar na primeira vez, depois este evento chama um applet que vai acionar uma impressora matricial e executar a impressão, em seguida se existir outros itens selecionados na tela esse botão teria que ser acionado automaticamente. Ainda tenho um outro problema, não sei quanto tempo pode levar para imprimir um documento.
Tente fazer o seguinte,
crie um método que carrega 1 lista de impressão
crie o poll no jsf, e faça com que ele execute a cada 5 segundos chamando esse método, ai ele faz a impressão e remove da lista o item impresso
o timer irá executar sempre a cada 5 segundos, e se ele achar algo na fila de impressão ele vai mandar
seria ± isso ou viajei total?
Você não viajou não, é isso mesmo. O método com a lista de itens a ser impresso já esta pronto. Este método que fiz acredito que algo igual ou bem próximo do que você está falando, ele tem uma lista de itens a ser impresso e a cada chamada que será feito ele seta o objeto que tenho que imprimir e remove ele da lista aguardando a próxima chamada para setar o próximo objeto até não encontrar nada.
O tempo tenho como calcular para cada impressão, porém as vezes que ele tem que ser chamado, isso não sei.
Usa o JQuery para implementar o evento de click:
$('#ID_DO_BOTAO').click(function(evento)
{
acaoDoBotao();
executaLoop(); //Implementação logo abaixo...
});
function acaoDoBotao()
{
//Implementar
}
depois faça um for de 1 até 5 executando a ação que quer…
function executaLoop()
{
for(int count = 1;count <= 5;count++)
{
acaoDoBotao();
}
}
eu acredito que o poll será a solução mais elegante mesmo então, e em relação ao tempo, acredito que a impressora irá gerenciar o pool de impressão, caso o metodo envie 1 impressão em cima da outra deve se fazer 1 fila na impressora,
você também poderia tentar medir o tamanho do buffer de impressão que chega no método, e criar 1 regra para aumentar ou diminuir o tempo de espera dependendo desse tamanho do buffer que chegou,
Acredito que seu ponto de vista esta correto. Vou implementar desta forma e irei responder com o exemplo do código, espero que de certo, rsrs. Agradeço pela força de todos.