6

我创建了一个简单的 servlet,其中将向用户提出 2 个问题,回答是真还是假。我的问题在于检索用户选择的答案。

代码:

            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,用于回答 True 或 False。当按下提交按钮时,我如何知道每个用户选择的值。

我知道使用 Javascript 可能更有效,但为了解决这个问题,我必须使用 servlet。

4

4 回答 4

15

您必须定义选择单选按钮时要检索的值

设置定义如果选中将提交的内容。

名称设置告诉该字段属于哪一组单选按钮。当您选择一个按钮时,同一组中的所有其他按钮都将被取消选择。

<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)) {
       ...
    }
    ...

}
于 2012-04-06T18:47:40.440 回答
6

您没有正确命名您的单选按钮。同一问题的每个单选选项都需要相同的名称属性。此外,您应该value在每个<input type="radio">. 我不确定您是否需要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>"
    );

然后在doPost()处理表单提交的 servlet 方法中,您可以使用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...
}
于 2012-04-06T18:40:30.793 回答
3

为同一个问题的收音机赋予相同的名称,并设置不同的值。看看这个页面

然后在请求中,您将获得一个带有无线电组名称和所选值的参数。提交 servlet 后,接收帖子可以使用:

String value = request.getParameter("radioName");
于 2012-04-06T18:38:53.080 回答
1

对于您的 HTML 代码,以下几行就足够了

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

例如,考虑您的 HTML 代码。

如果按下 Q1

“真的”

那么它将是我们在 Servlet 中的“输入”。

于 2014-08-19T11:23:20.120 回答