¿Cómo puedo mostrar un mensaje de confirmación de borrado en mi progama hecho con Java y Struts?

¿Cuándo se desea borrar algo y se pulsa Aceptar, quiero mostrar un mensaje de confirmación en plan "¿Desea borrar...? Si No". ¿Cuál es la mejor forma de hacerlo y cómo? Estoy trabajando con Java y Struts

1 respuesta

Respuesta
1
La mejor manera de hacerlo en con javascript. La forma seria asociar al botón "borrar" por ejemplo una función javascript que contendrá un código como:
if(confirm("¿Desea borrar?")){
//Codigo necesario para borrar o enviar el form o lo que quieras hacer...
}
Lo que hace el "confirm" es mostrarte el mensaje de confirmación.
Espero que me hayas entendido ahora si te digo, todo esto también se puede hacer con Java, como sabrás javascript se ejecuta en la maquina del cliente y el único problema que podría haber con esto es que el usuario tenga el javascript deshabilitado en su navegador por lo que no se ejecutara esto. De todas maneras es lo que se suele usar a no ser que te obliguen a que tu página siga las reglas de accesibilidad pero no suele ser lo usual.
Un saludo y espero no haberte liado si necesitar más orientación no dudes en preguntarme.
Lo que me has dicho me ha servido, pero necesito una aclaración. Te comento.
Mi formulario coge un identificador de una cartera, y la abre o la elimina en función de la opción seleccionada con un botón radio. Si está seleccionado para eliminar cartera, sale el mensaje de confirmación, y si pulso aceptar se continúa y se borra, y si pulso cancelar no se borra. La aclaración que necesito es que al pulsar cancelar se recarga el formulario, por lo que se borran los datos introducidos por el usuario. ¿Cómo puedo hacer para que eso no suceda? Es más, ¿Cómo puedo hacer lo que yo desee al pulsarse cancelar?, ¿Cómo puedo tomar yo el control? En principio mi idea era mantener el formulario igual, o modificar el botón radio solamente y cambiarle a abrir cartera quizá
Un saludo y gracias por tu ayuda
Hola de nuevo
Me he dado cuenta de algo más grave. A pesar de pulsar cancelar en el mensaje de confirmación, se efectúa el borrado. ¿Acaso debo implementar algo de lógica en la action?, porque no lo he hecho. En ese caso... ¿cómo lo hago?, es decir, ¿cómo sé en la action que se ha pulsado cancelar en ese mensaje de confirmación?
Gracias
Lo que pasa es que en la función javascript en el caso de que le de al botón cancelar tienes que hacer un return false para que no se ejecute el resto de la función javascript. Eso soluciona el problema de que los datos del formulario se borren porque estaba pasando que como se enviaba el formulario pues todos los datos se perdían pero al hacer un return false no se va a hacer submit del formulario.
De todas maneras seria bueno que enviases algo confirmando que el botón que ha pulsado es aceptar y no cancelar y en el action pues no dejes borrar si el botón es cancelar. Esto lo puedes hacer con un campo oculto en el formulario, este campo cambiara de valor en función del botón que pulses es decir, en la función javascript si pulsa aceptar le pones a este campo oculto el valor A (por ejemplo) y si es cancelar pues C (por ejemplo) y luego en el action compruebas que el campo oculto vale 'A' antes de borrar la cartera.
Con el return false 'casi' aseguras que nunca el campo oculto va a valer 'C' pero por seguridad deberías comprobarlo.
Otra cosilla. Si al pulsar cancelar llega de alguna manera al action y quieres volver manteniendo los datos del formulario pues lo que tienes que hacer es crear un objeto de tu ActionForm en el Action e inicializarlo con los valores del formulario y de esa manera no perderás los datos que se han introducido ya en el form.
Ok! He seguido tus instrucciones y todo me funciona bien (al menos no he encontrado nada que me alarme)
No había puesto los return en la función javascript, e incluso después de ponerlos, tampoco me funcionaba porque tenía en el código
<html:submit onclick="confirmarEliminacion();">
     <bean:message key="button.submit"/>
</html:submit>
Pero tras poner en el evento onclick "return confirmarEliminacion();", todo salió como quería. Como realmente no domino javascript, no conozco demasiado bien cuando poner return o no en los eventos (en otros muchos no lo tengo y funciona bien, quizá porque no están ligados al submit)
Y el apunte sobre asegurarme en la action con un atributo oculto no lo habría hecho si no me lo dices, pero me gusta la idea y lo he realizado
Muchas gracias, y no descartes que te haga más preguntas porque tu ayuda me ha venido bien :)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas