我在jsp中使用这个scriplet:
<%
String q3 = request.getParameter ("checkbox1");
session.setAttribute("q3", q3);
%>
这将从这些复选框中获取值
<p> Which of the following are associated with Threading? Select two </p>
<input type="checkbox" name="checkbox1" value="LiveLock">LiveLock<br>
<input type="checkbox" name="checkbox1" value="Stack Overflow">Stack Overflow<br>
<input type="checkbox" name="checkbox1" value="Heap">Heap<br>
<input type="checkbox" name="checkbox1" value="Starvation">Starvation<br>
<input type="submit" value="Next" >
或者更确切地说......它应该做什么。但是当我抓住这些值并将其打印出来时
<p>Good day <%= session.getAttribute("uname") %> </p>
<p>For question 1 you chose <%= session.getAttribute("q1") %> </p>
<p>For question 2 you chose <%= session.getAttribute("q2") %> </p>
<p>For question 3 you chose <%= session.getAttribute("q3") %> </p>
<p>For question 4 you chose <%= session.getAttribute("q4") %> </p>
q1,2,4的单选按钮工作正常。复选框将仅返回已检查的第一个值或更确切地说。首先出现的值,即如果我选择“Heap”然后选择“Livelock”,则在打印输出中它将显示“LiveLock”
答案 0 :(得分:0)
您应该使用request.getParameterValues()代替request.getParameter(),因为复选框名称相同。
请记住,getParameterValues()
会返回数组,因此您必须执行
String q3[] = request.getParameter ("checkbox1");
并且用于检索值迭代它如下
for(String s:q3)
{
System.out.println(s);
}
在浏览器中打印
你可以做到
for(String s:q3)
{
out.println(s);
}
答案 1 :(得分:0)
使用request.getParameterValues
获取多个复选框:
String[] q3 = request.getParameterValues ("checkbox1");
存储在会话中:
session.setAttribute("q3", request.getParameterValues("checkbox1"));
遍历显示值:
<p>Good day <%= session.getAttribute("uname") %> </p>
<p>For question 1 you chose
<%String[] ans = (String[])session.getAttribute("q3");
for(String chkd : ans) {
out.print(chkd);
out.print(", ");
}%>
</p>
注意:不建议使用划线。