Obrigado pela atenção pessoal
Consegui fazer a gravação do log, inserindo um método que realiza a chamada de uma action que por sua vez implementa o processo de gravação, passando como parametros o forward para chamar novamente a pagina atual e a mensagem provenientes de campos INPUT HIDDEN
JavaScript que realiza validação - Encontrou a condição, chama o método gravaLogJsp passando uma mensagem:
// verifica dias - numeros
if (isNaN(document.getElementById("txtValor").value)){
var mensagem = "O tipo de dado do parâmetro é diferente do Identificado pelo sistema (Número).";
alert(mensagem);
document.getElementById("txtValor").focus();
// grava log utilizando Log4j
gravaLogJsp(mensagem);
return false;
}
Método gravaLogJsp que recebe parametros de campo INPUT HIDDEN e passa a mensagem e o forward da action que ele vai executar:
// Chama action Log
function gravaLogJsp(mensagem){
// mensagem log
document.getElementById("mensagemLog").value = mensagem;
// página retorno - action
document.getElementById("paginaRetorno").value = "parametrizarAplicacao";
document.forms[0].action="gravaLogJsp.do";
document.forms[0].submit();
}
Campos HIDDEN no HTML:
<!-- Armazena dados do log jsp -->
<INPUT type="hidden" name="mensagemLog" id="mensagemLog">
<INPUT type="hidden" name="paginaRetorno" id="paginaRetorno">
No método execute do Action:
String mensagemLog = request.getParameter("mensagemLog");
String paginaRetorno = request.getParameter("paginaRetorno");
try {
// grava log em arquivo
logger.info(mensagemLog);
}
...
forward = mapping.findForward(paginaRetorno);
}
// Finish with
return forward;
Bom, o unico problema é que ele chama novamente a pagina de origem via action e não e perde os outros dados de outros formulário
Isto implementado em AJAX seria melhor, pois eu não teria que esperar nova requisição para continuar a edição da página :)