2012-04-06 73 views
5

我創建了一個簡單的servlet,在這個servlet中,用戶將看到2個問題,回答是真是假。我的問題在於檢索用戶選擇的答案。Java Servlet:如何檢索選定的單選按鈕值?

代碼:

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


     ); 

每個問題有2個單選按鈕,Q1rad1 & Q2rad2,回答真或假。當按下提交按鈕時,我怎麼知道每個用戶選擇的值。

我知道使用Javascript時可能會更有效率,但出於此問題的目的,我必須使用servlet。

+2

哦不,你爲什麼不使用JSP來生成HTML? – 2012-04-06 18:35:47

回答

2

給相同問題的無線電設備命名並設置不同的值。 看看這個page

然後在請求中,您將得到一個帶有收音機組名稱和所選值的參數。 提交接收後可以使用servlet後:

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

您還沒有正確命名你的單選按鈕。同一個問題的每個無線電選項需要相同的名稱屬性。另外,您應該在每個<input type="radio">上都有value屬性。我不確定你是否需要onclick處理程序。您還應該有一個</form>更近的標籤。您的形式可能是這樣的:

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

然後在Servlet的doPost()方法處理表單提交,您可以訪問使用request.getParameter()值。事情是這樣的:

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

所以我很清楚,在調用getParameter()時,q1和q2的字符串變量中存儲了什麼值? – Jnanathan 2012-04-06 18:45:01

+0

@Jathanathan:你得到的值是'''的'value'屬性中的值。我已經更新了我的答案,以包含'value'屬性。 – Asaph 2012-04-06 19:06:29

8

你必須定義要在單選按鈕被選中

設置定義,如果查了一下,將提交檢索值。

名稱設置告訴該字段屬於哪組單選按鈕。當您選擇一個按鈕時,同一組中的所有其他按鈕都將被取消選中。

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

在servlet將收到你必須像

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

對於您的HTML代碼的請求之下線有足夠的

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

例如,考慮到你的HTML碼。

如果Q1按下

「TRUE」

那麼它會在我們的Servlet 「輸入」。