2012-04-06 97 views
5

He creado un servlet simple en el que se le presentarán 2 preguntas al usuario, respondiendo verdadero o falso. Mi problema radica en recuperar las respuestas seleccionadas por el usuario.Java Servlet: ¿Cómo puedo recuperar los valores de botón de opción seleccionados?

Código:

  out.println("<FORM ACTION=\"Game\" METHOD = \"POST\">" + 

     "<b>Question 1: Are you over the age of 25? </b><br> <br>" + 

     "<input type = \"radio\" name = \"Q1rad1\" onclick = \"getAnswer('a')\"> True " + 
     "<input type = \"radio\" name = \"Q1rad2\" onclick = \"getAnswer('b')\"> False<br>" + 

     "<br><br><b>Question 2: Are you from earth?</b><br> <br>" + 

     "<input type = \"radio\" name = \"Q2rad1\" onclick = \"getAnswer('a')\"> True " + 
     "<input type = \"radio\" name = \"Q2rad2\" onclick = \"getAnswer('b')\"> False<br>" + 

     out.println("<Center><INPUT TYPE=\"SUBMIT\"></Center>"); 


     ); 

Cada pregunta tiene 2 botones de radio, Q1rad1 & Q2rad2, para responder verdadero o falso. ¿Cómo puedo saber el valor seleccionado por cada usuario cuando se presiona el botón de enviar?

Entiendo que puede ser más eficiente cuando se utiliza Javascript, pero a los fines de este problema debo usar servlets.

+2

Oh no, ¿por qué no usas un JSP para generar el código HTML? –

Respuesta

2

Asigne el mismo nombre a las radios de la misma pregunta y establezca valores diferentes. Mira esto page.

Luego en la solicitud obtendrá un parámetro con el nombre del grupo de radio y el valor seleccionado. Después de enviar el servlet recibe el poste puede utilizar:

String value = request.getParameter("radioName"); 
5

no ha nombrado a sus botones de radio correctamente. Cada opción de radio para la misma pregunta necesita el mismo atributo de nombre. Además, debe tener un atributo value en cada <input type="radio">. No estoy seguro de que necesite el controlador onclick en absoluto. También debe tener una etiqueta de cierre </form>. Su forma podría tener este aspecto:

out.println("<form action=\"Game\" method=\"POST\">" + 

    "<b>Question 1: Are you over the age of 25? </b><br> <br>" + 

    "<input type = \"radio\" name = \"Q1\" value=\"True\"> True " + 
    "<input type = \"radio\" name = \"Q1\" value=\"False\"> False<br>" + 

    "<br><br><b>Question 2: Are you from earth?</b><br> <br>" + 

    "<input type = \"radio\" name = \"Q2\" value=\"True\"> True " + 
    "<input type = \"radio\" name = \"Q2\" value=\"False\"> False<br>" + 

    "<Center><INPUT TYPE=\"SUBMIT\"></Center>" + 

    "</form>" 
    ); 

Y luego en el método de servlet doPost() que maneja el envío del formulario, puede acceder a los valores usando request.getParameter(). Algo como esto:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    String q1 = request.getParameter("Q1"); 
    String q2 = request.getParameter("Q2"); 
    // more processing code... 
} 
+0

Así que estoy claro, ¿qué valores se almacenan en las variables de cadena para q1 y q2 al llamar al parámetro getParameter()? – Jnanathan

+0

@Jnanathan: El valor que obtienes es el que está en el atributo 'value' de' '. Actualicé mi respuesta para incluir los atributos 'valor'. – Asaph

8

Usted tiene que definir el valor que desea recuperar cuando se selecciona el botón de radio

El ajuste valor define lo que se presentará si se activa.

La configuración del nombre indica a qué grupo de botones de radio pertenece el campo. Cuando selecciona un botón, todos los otros botones en el mismo grupo no están seleccionados.

<input type = "radio" name = "Q2" onclick = \"getAnswer('b') value="b"> 
<input type = "radio" name = "Q2" onclick = \"getAnswer('a') value="a"> 

En el servlet, que recibirá la solicitud tendrá algo así como

public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    // get the value of the button group 
    String q2 = request.getParameter("Q2"); 
    // compare selected value 
    if ("a".equals(q2)) { 
     ... 
    } 
    ... 

} 
1

para su código HTML las líneas de abajo son lo suficientemente

protected void doPost(HttpServletRequest req,HttpServletResponse res){ 
String q1 = request.getParameter("Q1"); 
String q2 = request.getParameter("Q2");` 
} 

Por ejemplo, considerando su HTML Código.

Si se pulsa Q1

"TRUE"

entonces sería nuestra "entrada" en el servlet.

Cuestiones relacionadas