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

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:
<form id="enviarencuesta" action="insertarrespuesta.jsp" method="post">
<input name="<%=pc.getIdPregunta()%>" value="<%=oc.getIdOpcion()%>" type="radio"/><%=oc.getDescripcion()%>
- insertarrespuesta.jsp
<%
Respuesta r = new Respuesta();
String opción = request.getParameter("name"); // Aquí la duda
(new ProcesadorFormulario()).insertRespuesta(r,opción);
%>
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
1

1 respuesta

Respuesta
1
y porque le pones name="<%=pc.getIdPregunta()%>? porque no le das un nombre nada mas? por decir algo así (disculpa mi analogía tan simple):
<input type="radio" name="pregunta1" value="1">Coche
<input type="radio" name="pregunta1" value="2">Avión
<input type="radio" name="pregunta1" value="3">Tren
<%
Respuesta r = new Respuesta();
String opción = request.getParameter("pregunta1");
(new ProcesadorFormulario()).insertRespuesta(r,opción);
%>
Y al hacer eso te solo te debería traer el valor seleccionado. Checalo y me cuentas que tal te fue!
Hola, en primer lugar darte las gracias por tu ayuda, bueno te explico que lo tengo que hacer de esta forma porque estoy recorriendo las preguntas de una base de datos, así que de esa forma no me valdría, por cierto ya logré avanzar, 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:
<%
Respuesta r = new Respuesta();
Map<String,String[]> m = request.getParameterMap();
   for(String[] es : m.values()){
      for(String s1 : es){
        String s2 = ((String[])m.get(s1))[0];
        (new ProcesadorFormulario()).insertRespuesta(r,s1,s2);
      }
   }
%>
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.
Bueno mira, no tengo tanta experiencia en JSP pero pues java es java, así que hago el intento. Mira según yo en esta linea:
for(String[] es : m.values())
Estas intentando guardar en un arreglo un vector o mas bien una colección de datos.
Y creo que seria mejor de esta manera.
<%
Respuesta r = new Respuesta();
Map<String,String[]> m = request.getParameterMap();
String[] es =m.values(); 
for(String s1 : es){
//String s2 = ((String[])m.get(s1))[0];
String s2 =m.get(s1);
(New ProcesadorFormulario()).insertRespuesta(r,s1,s2);
}
%>
Aunque no entiendo, según yo el método get te trae un valor a partir de una llave asociada a es valor. Supongo que con el m.values seria suficiente, pero bueno eso es cuestión de que lo veas. Mi recomendación es que debuggees tu código y así puedas ir viendo los valores de tus variables

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas