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

Duda al recoger datos de un formulario usando request (JSP)

Estas en el tema de Duda al recoger datos de un formulario usando request (JSP) en el foro de Java en Foros del Web. Hola a todos, tenía una pequeña duda a la hora de recoger datos del formulario usando request, en concreto estoy haciendo un formulario con preguntas ...
  #1 (permalink)  
Antiguo 18/01/2012, 10:23
 
Fecha de Ingreso: noviembre-2010
Mensajes: 72
Antigüedad: 8 años
Puntos: 1
Duda al recoger datos de un formulario usando request (JSP)

Hola a todos, tenía una pequeña duda a la hora de recoger datos del formulario usando request, en concreto estoy haciendo un formulario con preguntas tipo test usando el type="radio" y tengo problemas a la hora de recoger los datos de ese formulario.

Aquí expongo un trozo de código donde tengo la duda:

Código HTML:
<form id="enviarencuesta" action="insertarrespuesta.jsp" method="post">


		

<input name="<%=pc.getIdPregunta()%>"  value="<%=oc.getIdOpcion()%>" type="radio"/><%=oc.getDescripcion()%>	
	
			


insertarrespuesta.jsp
Código HTML:
<%

Respuesta r = new Respuesta();
String opcion = request.getParameter("name"); // Aquí la duda

(new ProcesadorFormulario()).insertRespuesta(r,opcion);


%> 


Pues bien, mi duda es que no sé qué tengo que poner dentro de request.getParameter() para que pille lo de name="<%=pc.getIdPregunta()%>", porque si fuera name="pid" entonces en sería request.getParameter("pid"), pero al ser name="<%=pc.getIdPregunta()%>" no sé qué tengo que poner.


A ver si por favor pudierais ayudarme.

Un saludo y muchísimas gracias.

Última edición por batistap; 18/01/2012 a las 11:22
  #2 (permalink)  
Antiguo 18/01/2012, 14:50
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 9 años, 6 meses
Puntos: 306
Respuesta: Duda al recoger datos de un formulario usando request (JSP)

Lo que tienes que usar es

request.getParameter("loquepinte.pc.getIdPregunta( )")

Si ves el html de la página generada antes de enviar el formulario, ya sabes qué tienes que buscar.

Me da la impresión de que quieres hacer algo de una forma incorrecta, así que mejor sería que explicases qué es lo que intentas conseguir.
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #3 (permalink)  
Antiguo 19/01/2012, 01:51
 
Fecha de Ingreso: noviembre-2010
Mensajes: 72
Antigüedad: 8 años
Puntos: 1
Respuesta: Duda al recoger datos de un formulario usando request (JSP)

Cita:
Iniciado por Xerelo Ver Mensaje
Lo que tienes que usar es

request.getParameter("loquepinte.pc.getIdPregunta( )")

Si ves el html de la página generada antes de enviar el formulario, ya sabes qué tienes que buscar.

Me da la impresión de que quieres hacer algo de una forma incorrecta, así que mejor sería que explicases qué es lo que intentas conseguir.
Sí puede ser que no lo esté haciendo de manera correcta, lo que quiero hacer es recoger las respuestas de una encuesta al realizarla, por ejemplo supongamos que la encuesta tiene 20 preguntas tipo test (type="radio"), pues vas marcando en cada pregunta una opción y cuando todas las preguntas hayan sido contestadas eligiendo una opción en cada una de ellas que le des al botón "Enviar" y te guarde cada respuesta que se le ha dado a cada pregunta de la encuesta en una tabla de la base de datos.


Saludos y muchas gracias por tu ayuda.
  #4 (permalink)  
Antiguo 19/01/2012, 01:59
 
Fecha de Ingreso: noviembre-2010
Mensajes: 72
Antigüedad: 8 años
Puntos: 1
Respuesta: Duda al recoger datos de un formulario usando request (JSP)

Pongo la página jsp encargada de mostrar la encuesta:


Código JSP:
Ver original
  1. <%@ page language="java" import="pos.domain.*,java.util.*,pos.data.*,java.sql.Connection" %>
  2. <!DOCTYPE HTML PUBLIC "-//w3c//dtd html 4.0 transitional//en">
  3. <html>
  4. <head>
  5. <title>Preguntas</title>
  6. <link rel="stylesheet" type="text/css" href="style/style.css" />
  7. <style type="text/css">
  8. <!--
  9.     #cabecera td{background-color: rgb(238, 238, 238);}
  10.     #productos td{
  11.         border-top-width: 1px;
  12.     border-top-style: solid;
  13.         border-top-color: rgb(153, 0, 51);
  14.     }
  15. -->
  16. </style>
  17. </head>
  18. <body>
  19.  
  20.  
  21.  
  22. <div id="div_form">
  23. <form id="enviarencuesta" action="insertarrespuesta.jsp" method="post">
  24.  
  25.  
  26. <table summary ="Listado de Encuestas" cellSpacing="1" cellPadding="6" width="770" align="center" border="0">
  27.  
  28.    
  29. <%
  30.         Connection conn = ConnectionManager.getInstance().checkOut();
  31.         String encuestaid = request.getParameter("pid");
  32.         String oidencuesta = EncuestaStore.getInstance().seleccionaEncuestaOID(conn, encuestaid);
  33.  
  34.         List<Pregunta> preguntas =  EncuestaStore.getInstance().seleccionaPreguntasDeLaEncuesta(oidencuesta);
  35.                
  36.         for (Iterator<Pregunta> iter = preguntas.iterator(); iter.hasNext();) {
  37.             Pregunta pc = (Pregunta) iter.next();
  38.            
  39.            
  40. %>     
  41.         <tr>           
  42.             <td><%=pc.getTituloPregunta()%><br></td>
  43.         </tr>
  44.  
  45.  
  46. <%
  47.        
  48.  
  49.  
  50.            
  51.             String idpregunta = EncuestaStore.getInstance().seleccionaPreguntaOID2(conn, pc.getIdPregunta());
  52.                 List<Opcion> opciones = EncuestaStore.getInstance().seleccionaOpcionesDeLaPregunta(idpregunta);
  53.                 for (Iterator<Opcion> iter2 = opciones.iterator(); iter2.hasNext();) {
  54.                     Opcion oc = (Opcion) iter2.next();
  55.                    
  56. %>
  57.     <tr>   
  58.    <td><input name="<%=pc.getIdPregunta()%>" value="<%=oc.getIdOpcion()%>" type="radio"/><%=oc.getDescripcion()%><br></td> 
  59.     </tr>
  60.            
  61. <%
  62.  
  63.  
  64.                 }
  65.                
  66.                                  
  67.         }
  68. %>       
  69.                      <tr>
  70.                      <td colspan="3" align="center"><input type="submit" value="ENVIAR"/></td>
  71.                      </tr>
  72.  
  73.                
  74. </table>
  75.  
  76. </form>
  77. </div>
  78. </body>
  79.  
  80. </html>




Pongo aquí el código de la página jsp encargada de recoger los datos al realizar la encuesta y darle al botón "ENVIAR" (insertarrespuesta.jsp):

Código JSP:
Ver original
  1. <%@ page language="java" import="pos.domain.*,java.util.*,pos.data.*" %>
  2.  
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  4. <html>
  5. <head>
  6. <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  7. <title>Insert title here</title>
  8. </head>
  9. <body>
  10.  
  11. AÑADIDO CORRECTAMENTE
  12.  
  13. <%
  14.  
  15. Respuesta r = new Respuesta();
  16. String opcion = request.getParameter("name");
  17.  
  18. (new ProcesadorFormulario()).insertRespuesta(r,opcion);
  19.  
  20.  
  21. %>
  22.  
  23. </body>
  24. </html>
  #5 (permalink)  
Antiguo 19/01/2012, 04:03
 
Fecha de Ingreso: noviembre-2010
Mensajes: 72
Antigüedad: 8 años
Puntos: 1
Respuesta: Duda al recoger datos de un formulario usando request (JSP)

Bueno pues ya voy encaminando esto, aunque aún no me sale del todo bien, uso el getParameterMap() para recoger las preguntas y las opciones marcadas mediante clave/valor del Map que nos devuelve request.getParameterMap(), pero me da fallo, bueno os pongo el código de la página jsp encargada de recoger los datos de la encuesta:

Código JSP:
Ver original
  1. <%
  2. Respuesta r = new Respuesta();
  3. Map<String,String[]> m = request.getParameterMap();
  4.     for(String[] es : m.values()){
  5.         for(String s1 : es){
  6.              String s2 = ((String[])m.get(s1))[0];
  7.               (new ProcesadorFormulario()).insertRespuesta(r,s1,s2);
  8.  
  9.         }
  10.      }
  11.  
  12.  
  13. %>


Probé solo para que me guardara el valor y me lo guardaba bien en la base de datos, pero cuando quiero guardar también la clave tengo problemas, el fallo me lo detecta en esta línea: String s2 = ((String[])m.get(s1))[0];

todo esto lo puse así porque me apoyé en esto: http://www.rodrigoasensio.com/2009/03/javalangclasscastexception-ljavalangstring-cannot-be-cast-to-javalangstring/

Me da fallo y me dice lo siguiente: java.lang.NullPointerException



¿Por qué me da fallo?



Un saludo y muchas gracias.
  #6 (permalink)  
Antiguo 19/01/2012, 06:39
Avatar de Fuzzylog  
Fecha de Ingreso: agosto-2008
Ubicación: En internet
Mensajes: 2.466
Antigüedad: 10 años, 2 meses
Puntos: 184
Respuesta: Duda al recoger datos de un formulario usando request (JSP)

bien porque la variable m es null, o porque el array que obtienes es null.
Si no puedes hacer debug, intenta que te imprima por pantalla los valores de m o de (String[])m.get(s1) para ver cual de los dos es null.
__________________
if (fuzzy && smooth) {
fuzzylog = "c00l";
return true;
}
  #7 (permalink)  
Antiguo 19/01/2012, 08:37
 
Fecha de Ingreso: noviembre-2010
Mensajes: 72
Antigüedad: 8 años
Puntos: 1
Respuesta: Duda al recoger datos de un formulario usando request (JSP)

Cita:
Iniciado por Fuzzylog Ver Mensaje
bien porque la variable m es null, o porque el array que obtienes es null.
Si no puedes hacer debug, intenta que te imprima por pantalla los valores de m o de (String[])m.get(s1) para ver cual de los dos es null.
Así es había un null, ya lo arreglé, muchas gracias!!!

Etiquetas: formulario, jsp, recoger, request, string
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 10:24.