a4j Intercept: pedido commandButton
Pergunta
Estou desenvolvendo aplicações web usando a4j, Richfaces. Um dos minha exigência é, eu preciso verificar se o usuário tiver alterado quaisquer valores na forma quando ele está tentando navegar para fora da página.
Eu tenho botões Salvar e Cancelar na página.
Eu estou usando o botão a4j:command
para cancelar a funcionalidade. Ao clicar no botão de cancelamento deve fazer a seguir as coisas
- Verifique se o usuário tiver modificado qualquer coisa na forma (isso eu estou fazendo usando javascript e tem uma bandeira se o usuário alterou quaisquer valores)
- caixa de confirmação Display (javascript confirmar com valores "Você realmente quer para descartar as alterações - SIM NÃO") quando o usuário altera os valores de formulário
- Se o usuário diz que sim, em seguida, enviar o formulário usando AJAX (usando a4j)
Meu código botão de comando a4j é assim
<a4j:commandButton action="MyClass.cancel_action"
onclick="checkIsPageChanged()"/>
A questão aqui é, ao usar usando a4j:commandButton
, eu não posso chamar a função javascript intermediário (a função que verifica se o usuário atualiza qualquer caixa de confirmação valores e displays) e, em seguida, submeter o pedido usando ajax.
Eu olhei o código gerado pelo JSF eo código é como (não exatamente, mas syntact)
<input type="button"
onclick="checkIsPageChanged();AJAX.submit('')/>
A coisa é quando eu clico no botão, ele está chamando única checkIsPageChanged()
e não chamando AJAX.submit()
.
Qualquer solução para este vai me ajudar.
Agradecemos antecipadamente.
Solução 2
Para ser mais específico, podemos usar:
onclick="if(!isPageChanged()) {return false}"
Voltando falsa não vai submeter o pedido.
Outras dicas
Use a4j:jsFunction
e chamada que do seu a4j:commandButton
quando os checkIsPageChanged()
retorna verdadeiro.
por exemplo.
<a4j:commandButton action="MyClass.cancel_action"
onclick="if(checkIsPageChanged()) { cancel(); }"/>
<a4j:jsFunction name="cancel" action="MyClass.cancel_action"/>