Java 提交多个复选框时出错

Java 提交多个复选框时出错,java,jsp,session,checkbox,scriptlet,Java,Jsp,Session,Checkbox,Scriptlet,我在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" n

我在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,而不是您应该使用的,因为复选框名称相同

记住getParameterValues返回数组,所以您必须

  String q3[] = request.getParameter ("checkbox1");
要检索值,请按如下所示进行迭代

for(String s:q3)
{
System.out.println(s);
}
用于在浏览器中打印

你能行

for(String s:q3)
    {
    out.println(s);
    }
使用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>

注意:不建议使用抄写纸。

谢谢。我只是尝试了一下,想象它确实起了作用,但在屏幕上我看到了这个:[Ljava.lang.String;@59ffea71,单选按钮,它说:对于问题2,你选择了Liskov替换原则,它说:对于问题3,你选择了[Ljava.lang.String;@59ffea71想象一下我必须转换成一个字符串,有什么想法吗?差不多了,只是不确定如何在所需页面上输出.println。请参阅下面的注释了解其他答案谢谢。但我不想系统化它,我需要它像单选按钮一样在浏览器中打印have@RedBaron您可以使用out.println在浏览器中打印Cool,think我们就快到了。唯一的问题是我需要将out.printlns放在与复选框不同的页面上,出于某种原因,它无法识别红色下划线的q3变量。对于问题3,您选择了

@RedBaron keep String q3[]=request.getParameter checkbox1;以及字符串s:q3{out.printlns;}在同一个页面中。它将打印所有4个值。我理解这是如何工作的。我的问题是,我有一个results.jsp文件,其中显示所有用户的答案。目前使用此方法,它将结果打印到下一页错误的页面上。我需要在results.jsp上执行out.println,但如果执行此操作,则jsp无法识别结果变化无常。你看到问题了吗?下面是另一个白痴投票提出了完全合理的问题。我不明白,我向一个肯定有人知道答案的社区提问。哦,看,下面两个评论的人都帮了大忙。然后一些没有阶级、没有胆量、愚蠢、仰卧、无脊椎动物的白痴投了不好的票理智,表现出你的懦夫。