2012-04-06 7 views
5

Tôi đã tạo một servlet đơn giản trong đó người dùng sẽ được trình bày với 2 câu hỏi, trả lời đúng hoặc sai. Vấn đề của tôi nằm trong việc truy xuất các câu trả lời do người dùng chọn.Java Servlet: Làm cách nào tôi có thể truy xuất các giá trị nút radio đã chọn?

Code:

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


     ); 

Mỗi câu hỏi có 2 nút radio, Q1rad1 & Q2rad2, để trả lời Đúng hay Sai. Làm thế nào tôi có thể biết giá trị được chọn bởi mỗi người dùng khi nhấn nút gửi.

Tôi hiểu nó có thể hiệu quả hơn khi sử dụng Javascript nhưng vì mục đích của vấn đề này, tôi phải sử dụng servlet.

+2

Ồ không, tại sao bạn không sử dụng JSP để tạo HTML? –

Trả lời

2

Đặt cùng tên cho radio của cùng một câu hỏi và đặt các giá trị khác nhau. Nhìn vào số page này.

Sau đó, trong yêu cầu, bạn sẽ nhận được thông số có tên nhóm radio và giá trị được chọn. Sau khi gửi servlet nhận được bài đăng có thể sử dụng:

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

Bạn chưa đặt tên cho nút radio của mình một cách chính xác. Mỗi tùy chọn radio cho cùng một câu hỏi cần cùng một thuộc tính name. Ngoài ra, bạn phải có thuộc tính value trên mỗi <input type="radio">. Tôi không chắc chắn bạn cần xử lý onclick ở tất cả. Bạn cũng nên có một thẻ gần hơn </form>. Biểu mẫu của bạn có thể trông như thế này:

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

Và sau đó trong phương pháp doPost() của servlet để xử lý việc nộp biểu mẫu, bạn có thể truy cập các giá trị sử dụng request.getParameter(). Một cái gì đó như thế này:

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

Vì vậy, tôi rõ ràng, những giá trị nào được lưu trữ trong các biến String cho q1 và q2 khi gọi hàm getParameter()? – Jnanathan

+0

@Jnanathan: Giá trị bạn nhận được là bất kỳ giá trị nào trong thuộc tính 'value' của' '. Tôi đã cập nhật câu trả lời của mình để bao gồm các thuộc tính 'value'. – Asaph

8

Bạn phải xác định giá trị mà bạn muốn lấy khi nút radio được chọn

Giá trị thiết lập xác định những gì sẽ được đệ trình nếu kiểm tra.

Cài đặt tên cho biết nhóm các nút radio thuộc lĩnh vực nào. Khi bạn chọn một nút, tất cả các nút khác trong cùng một nhóm sẽ không được chọn.

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

Trong Servlet của bạn mà sẽ nhận được yêu cầu, bạn sẽ có một cái gì đó giống như

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

Đối với Mã HTML của bạn các dòng dưới đây là đủ

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

Ví dụ Xét HTML của bạn Mã.

Nếu Q1 được nhấn

"TRUE"

sau đó nó sẽ là "đầu vào" của chúng tôi trong Servlet.