Foros del Web » Programación para mayores de 30 ;) » Java »

problema jsp y servlet

Estas en el tema de problema jsp y servlet en el foro de Java en Foros del Web. Buenos días gente, estoy teniendo un problema, quizas fácil, quizas no. La cosa es así. En un proyecto dinamico web, tengo un simple formulario en ...
  #1 (permalink)  
Antiguo 07/06/2016, 12:53
 
Fecha de Ingreso: agosto-2015
Mensajes: 24
Antigüedad: 8 años, 8 meses
Puntos: 0
problema jsp y servlet

Buenos días gente, estoy teniendo un problema, quizas fácil, quizas no.

La cosa es así.
En un proyecto dinamico web, tengo un simple formulario en un index.jsp. (nombre, apellido, edad). El cual al hacer un submit tengo que devolver un mensaje de error si en la pagina hay algún dato que no haya ingresado.

Este mensaje de error, lo tengo que traer desde un servlet, el cual llama a una clase que ProcesaPaginas minas, en la cual lanza la excepción y la atrapo en el servlet.

El servlet, tiene que tirarle al jsp el mensaje y el input de tipo texto que esta incompleto.

El problema es que desde el servlet, cuando necesito volver al formulario, este, se limpia y queda desde cero.

Yo necesito conservar los datos, por ej:

Nombre:
Apellido: Perez
Edad: 32

Cuando el servlet hace el :
request.getRequestDispatcher("index.jsp").forward( request, response);
necesito volver al browser y que la pagina tire el alert("por favor ingrese el nombre")---> esto ya lo tengo hecho y me funciona, pero la pagina queda en cero

Nombre:
Apellido:
Edad:

¿cómo tengo que hacer para que esto no me pase?.

LEs muestro el código del servlet.

DoPost

HttpSession httpS = request.getSession(true);
httpS = cargarAtributosDesdeCliente(request);


try {
El ProcesaHttpSession es el encargado de lanzarme la excepción de que campo es el incompleto
ProcesaHttpSession pc = new ProcesaHttpSession(httpS);
} catch (ExcepcionDatoNumerico e) {
e.printStackTrace();
request.setAttribute("ControlError", e.getLocalizedMessage().split("-")[1].trim());
request.setAttribute("ControlErrorMensaje", e.getLocalizedMessage().split("-")[0].trim());
request.setAttribute("alertMsg", e.getLocalizedMessage().split("-")[0].trim());
request.getRequestDispatcher("index.jsp").forward( request, response);
} catch (ExcepcionCampoVacio e) {
e.printStackTrace();
request.setAttribute("ControlError", e.getLocalizedMessage().split("-")[1].trim());
request.setAttribute("ControlErrorMensaje", e.getLocalizedMessage().split("-")[0].trim());
request.setAttribute("alertMsg", e.getLocalizedMessage().split("-")[0].trim());
System.out.println("campovaciooooo");
request.setAttribute("apellido", "nada");
RequestDispatcher rd = getServletContext().getRequestDispatcher("/index.jsp");
rd.include(request, response);

}


Gracias.
  #2 (permalink)  
Antiguo 08/06/2016, 09:13
 
Fecha de Ingreso: agosto-2015
Mensajes: 24
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: problema jsp y servlet

No hay chances, no logro hacer que el servlet vuelva al jsp sin refrescarme todo el formulario y dejarmelo todo vacio.

¿jquery, json? ¿qué puedo usar?.
  #3 (permalink)  
Antiguo 08/06/2016, 10:09
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 3 meses
Puntos: 11
Respuesta: problema jsp y servlet

Tienes que pasarle todos los datos del jsp al servlet y cuando el servlet conteste regresar todos esos datos de nuevo y por ultimo en el jsp pintarlos al cargar, opcion muy engorrosa.
Mejor usa ajax con jquery y json.
  #4 (permalink)  
Antiguo 08/06/2016, 15:21
 
Fecha de Ingreso: agosto-2015
Mensajes: 24
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: problema jsp y servlet

Estuve generando un ejemplo que me funciono perfecto,el problema es que tengo por lo menos 20 formularios dentro de mi aplicacion web con muchos inputs.
En el ejemplo jquery hace lo siguiente.

Cita:
<script src="http://code.jquery.com/jquery-latest.js">

</script>
<script>
$(document).ready(function() {
$('#submit').click(function(event) {
var nombreVar = $('#FLD_NombrePropuesta').val();
var numeroVar = $('#FLD_NumeroPropuesta').val();
var validezVar = $('#FLD_ValidezPropuestaDias').val();
// Si en vez de por post lo queremos hacer por get, cambiamos el $.post por $.get
$.post('ActionServlet', {
nombre : nombreVar,
numero: numeroVar,
validez: validezVar
}, function(responseText) {
$('#tabla').html(responseText);
});
});
});
Osea, cuando entra al servlet "ActionServler" trae los datos haciendo el
request.getParameter("nombre")
request.getParameter("numero")
request.getParameter("validez")

Pero esto es un problema, porque no puedo agregar a mano cada uno de los inputs y asignarle una variable para que despues en el servlet los pueda leer... ¿hay alguna otra forma de que yo en el servlet pueda leer cualquier valor con getParameter??? pq si no lo incluyo me trae null...

Gracias

Última edición por wagego; 08/06/2016 a las 15:45
  #5 (permalink)  
Antiguo 08/06/2016, 17:06
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 3 meses
Puntos: 11
Respuesta: problema jsp y servlet

En jquery existe la función serialize que te devuelve todos inputs de un formulario, para ello todos los inputs deben tener el atributo name establecido:
Código Javascript:
Ver original
  1. function showValues() {
  2.     var str = $( "form" ).serialize();
  3.     $( "#results" ).text( str );
  4.   }
Revisala, igual y te sirve.
  #6 (permalink)  
Antiguo 08/06/2016, 17:30
 
Fecha de Ingreso: agosto-2015
Mensajes: 24
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: problema jsp y servlet

Cita:
Iniciado por abrahamhs Ver Mensaje
En jquery existe la función serialize que te devuelve todos inputs de un formulario, para ello todos los inputs deben tener el atributo name establecido:
Código Javascript:
Ver original
  1. function showValues() {
  2.     var str = $( "form" ).serialize();
  3.     $( "#results" ).text( str );
  4.   }
[URL="https://api.jquery.com/serialize/"]Revisala[/URL], igual y te sirve.
abrahamhs, antes que nada te agradezco la ayuda. Por el momento realice tu ejemplo con serialize(), hago un alert y me muestra bien todo lo ingresado.
Mi problema esta en el post de servlet ahora, porque yo necesito hacer un getParameter("nombreDelContro") y que me devuelva lo cargado en el formulario. por ej:

<form id="form1">
Nombre:<input type="text" id="nombre" name="nombre" /> <br>
Apellido: <input type="text" id="apellido" name="apellido" /> <br>
</form>

en el var str = $( "form1" ).serialize();
alert(str);
me arroja bien el resultado " nombre=walter&apellido=garcia"

Ahora cuando ya el jquery va al post y quiero hacer "request.getParameter("nombre") me trae null. Yo si o si necesito realizar eso porque tengo clases javas para controlar httpSessions y varias cosas más...

Desde ya te agradezco nuevamente la información si me podes ayudar!.
  #7 (permalink)  
Antiguo 08/06/2016, 17:38
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 3 meses
Puntos: 11
Respuesta: problema jsp y servlet

Mira en esta linea
Cita:
<form id="form1">
no indicas metodo http (get o post)
Si en ajax tampoco lo pusiste ese puede ser el error.
Si pones method="GET" en html, en el servlet debes implementar la función doGet, porque si implementas doPost llegara todo vacio.
Lo mismo si usas method="POST" en html o jquery, en el servlet debes implementar doPost porque si usas doGet llegara todo vacio.
  #8 (permalink)  
Antiguo 08/06/2016, 17:55
 
Fecha de Ingreso: agosto-2015
Mensajes: 24
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: problema jsp y servlet

Cita:
Iniciado por abrahamhs Ver Mensaje
Mira en esta linea no indicas metodo http (get o post)
Si en ajax tampoco lo pusiste ese puede ser el error.
Si pones method="GET" en html, en el servlet debes implementar la función doGet, porque si implementas doPost llegara todo vacio.
Lo mismo si usas method="POST" en html o jquery, en el servlet debes implementar doPost porque si usas doGet llegara todo vacio.
Lo había puesto en mi sentencia de ajax.
Ahora ya pude hacer andar los getParameter en el servlet. Solo me queda saber como hacer lo que hacia antes de hacer un

out.println("<script type=\"text/javascript\">");
out.println("alert('completa el nombreeeeeeeeeeeeeeeeeee');");
out.println("</script>");

en el servlet y que eso se muestre en el jsp el alert por ej.

Antes lo hacía bien cuando no lo hacia con ajax...

Código:
<script src="http://code.jquery.com/jquery-latest.js">

</script>
<script>
	$(document).ready(function() {
		$('#submit').click(function(event) {
			var nombreVar = $('#nombre').val();
			var apellidoVar = $('#apellido').val();
			var edadVar = $('#edad').val();

			$.post('ActionServlet', {
				nombre : nombreVar,
				apellido: apellidoVar,
				edad: edadVar
			}, function(responseText) {
				$('#tabla').html(responseText);
			});
		});
	});
</script>
  #9 (permalink)  
Antiguo 08/06/2016, 18:23
 
Fecha de Ingreso: enero-2009
Ubicación: Kandor
Mensajes: 209
Antigüedad: 15 años, 3 meses
Puntos: 11
Respuesta: problema jsp y servlet

Mira este ejemplo:
Código Javascript:
Ver original
  1. var jqxhr = $.ajax( "example.php" )
  2.   .done(function() {
  3.     alert( "success" );
  4.   })
  5.   .fail(function() {
  6.     alert( "error" );
  7.   })
  8.   .always(function() {
  9.     alert( "complete" );
  10.   });

y este otro:

Código Javascript:
Ver original
  1. $.ajax({
  2.   method: "POST",
  3.   url: "some.php",
  4.   data: { name: "John", location: "Boston" }
  5. })
  6.   .done(function( msg ) {
  7.     alert( "Data Saved: " + msg );
  8.   });

Ambos vienen aqui. En el ejemplo donde viene el msg, msg trae el contenido de lo que devuelve el servlet.
Solo tienes que usar javascript para modificar el html y agregar el comportamiento dependiendo de la respuesta msg. En general en el servlet se arma un json o un xml con los datos de respuesta y se descompone en javascript, para modificar el html. En este caso tu pondrias un alert como esta en el ejemplo. Los ejemplos estan con archivos php, pero ahi va la url de tu servlet java.
  #10 (permalink)  
Antiguo 09/06/2016, 07:05
 
Fecha de Ingreso: agosto-2015
Mensajes: 24
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: problema jsp y servlet

Cita:
Iniciado por abrahamhs Ver Mensaje
Mira este ejemplo:
Excelente abrahamhs ya tengo mi funcion ajax funcionando!!!

<script>
$(document).ready(function() {
$('#submit').click(function(event) {
var offerData = $("#form1").serialize();
$.ajax({
type: "POST",
url: "ActionServlet",
data: offerData,
success: function(result){
$('#tabla').html(result);
}
});
});
});
</script>

Lo único que me faltaría saber como hacer, es lo siguiente.
Este caso sirve para analizar un solo formulario. Osea hago click en un boton submit y ejecuto esa función y analiza ese #form1

Ahora, yo tengo un boton general de submit que tiene que analizar exactamente como hace lo que hice yo, pero tiene que verificar todos los formulario que tengo (form1, form2, form3, form4, form5...)
Ahi estoy trabado, yo tengo 1 solo boton y como 20 formularios dentro de la pagina.

Gracias!!!!!!!!!!!
  #11 (permalink)  
Antiguo 09/06/2016, 07:41
 
Fecha de Ingreso: agosto-2015
Mensajes: 24
Antigüedad: 8 años, 8 meses
Puntos: 0
Respuesta: problema jsp y servlet

Me adelante... la solución a mi problema es la siguiente.

var offerData = $("#form1,#form2").serialize();

Por lo visto tendre que poner a mano el id de todos los formularios a analizar.

Excelente , gracias por la ayuda!

Etiquetas: clase, jsp, servlet
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:45.