2012-04-06 9 views
5

Ho creato un semplice servlet in cui un utente verrà presentato con 2 domande, rispondendo sia vero che falso. Il mio problema sta nel recuperare le risposte selezionate dall'utente.Servlet Java: come posso recuperare i valori dei pulsanti radio selezionati?

Codice:

  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>"); 


     ); 

Ogni domanda ha 2 pulsanti di opzione, Q1rad1 & Q2rad2, per rispondere Vero o Falso. Come posso conoscere il valore selezionato da ciascun utente quando viene premuto il pulsante di invio.

Capisco che potrebbe essere più efficiente quando si utilizza Javascript, ma per gli scopi di questo problema devo utilizzare servlet.

+2

Oh no, perché non usi un JSP per generare l'HTML? –

risposta

2

Assegnare lo stesso nome alle radio della stessa domanda e impostare valori diversi. Guarda questo page.

Quindi nella richiesta verrà visualizzato un parametro con il nome del gruppo radio e il valore selezionato. Dopo presentare il servlet l'riceve il post può utilizzare:

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

Non hai chiamato correttamente i pulsanti di opzione. Ogni opzione radio per la stessa domanda richiede lo stesso attributo nome. Inoltre, si dovrebbe avere un attributo value su ogni <input type="radio">. Non sono sicuro che tu abbia bisogno del gestore onclick. Dovresti anche avere un tag più vicino </form>. Il modulo potrebbe essere simile a questo:

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>" 
    ); 

E poi nel metodo di servlet doPost() che gestisce l'invio del modulo, è possibile accedere ai valori utilizzando request.getParameter(). Qualcosa di simile a questo:

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

Quindi sono chiaro, quali valori sono memorizzati nelle variabili String per q1 e q2 quando si chiama getParameter()? – Jnanathan

+0

@Jnanathan: il valore che ottieni è quello che si trova nell'attributo 'value' di' '. Ho aggiornato la mia risposta per includere gli attributi 'value'. – Asaph

8

È necessario definire il valore che si desidera recuperare quando si seleziona il pulsante di opzione

L'impostazione del valore di definisce cosa verrà inviato al momento.

L'impostazione indica a quale gruppo di pulsanti di opzione appartiene il campo. Quando si seleziona un pulsante, tutti gli altri pulsanti nello stesso gruppo non sono selezionati.

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

Nel vostro Servlet, che riceverete la richiesta avrete qualcosa come

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

Per il vostro codice HTML righe sottostanti sono abbastanza

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

Per esempio, considerando il codice HTML Codice.

Se Q1 viene premuto

"TRUE"

allora sarebbe il nostro "ingresso" in Servlet.

Problemi correlati