Java Servlet:如何检索选定的单选按钮值?
Posted
技术标签:
【中文标题】Java Servlet:如何检索选定的单选按钮值?【英文标题】:Java Servlet: How can I retrieve selected radio button values? 【发布时间】:2012-04-20 07:37:23 【问题描述】:我创建了一个简单的 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。
【问题讨论】:
哦不,你为什么不使用 JSP 来生成 html? 【参考方案1】:您必须定义选择单选按钮时要检索的值
value 设置定义了选中后将提交的内容。
name 设置告诉该字段属于哪一组单选按钮。当您选择一个按钮时,同一组中的所有其他按钮都将被取消选择。
<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))
...
...
【讨论】:
【参考方案2】:您没有正确命名单选按钮。同一问题的每个单选选项都需要相同的名称属性。此外,每个<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...
【讨论】:
所以我很清楚,在调用 getParameter() 时,q1 和 q2 的字符串变量中存储了哪些值? @Jnanathan:您获得的值是<input type="radio">
的 value
属性中的任何值。我已更新我的答案以包含 value
属性。【参考方案3】:
为同一个问题的收音机赋予相同的名称,并设置不同的值。 看看这个page。
然后在请求中,您将获得一个带有无线电组名称和所选值的参数。 提交 servlet 后接收 post 可以使用:
String value = request.getParameter("radioName");
【讨论】:
【参考方案4】:对于您的 HTML 代码,以下几行就足够了
protected void doPost(HttpServletRequest req,HttpServletResponse res)
String q1 = request.getParameter("Q1");
String q2 = request.getParameter("Q2");`
例如,考虑您的 HTML 代码。
如果 Q1 被按下
“真”
那么它将是我们在 Servlet 中的“输入”。
【讨论】:
以上是关于Java Servlet:如何检索选定的单选按钮值?的主要内容,如果未能解决你的问题,请参考以下文章