【问题标题】:error submitting multiple checkboxes提交多个复选框时出错
【发布时间】:2014-11-13 10:43:21
【问题描述】:

我在我的 jsp 中使用这个脚本:

<%
    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”

【问题讨论】:

  • 另一个白痴在这里投票完全合理的问题。我不明白一些事情,我向一个肯定有人知道答案的社区提出问题。哦,看,下面评论的两个人都帮了很多忙。然后是一些没有阶级的、没有胆量的、愚蠢的、仰卧的、无脊椎动物的白痴无缘无故地投票。表现出你自己的懦夫。

标签: java jsp session checkbox scriptlet


【解决方案1】:

您应该使用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);
    }

【讨论】:

  • 谢谢。但我不想 syso 它,我需要它像单选按钮一样在浏览器中打印
  • @RedBaron 你可以使用 out.println() 在浏览器中打印
  • 酷,我们快到了。唯一的问题是我需要将“out.println(s)”放在与复选框不同的页面上,并且由于某种原因它无法识别 q3 变量(红色下划线)。对于问题 3,您选择了
  • @RedBaron keep String q3[] = request.getParameter ("checkbox1");以及 for(String s:q3) { out.println(s); } 在同一页面中。它将打印所有 4 个值。
  • 我了解它是如何工作的。只是我的问题是我有一个 results.jsp 文件,其中显示了所有用户的答案。目前使用这种方法,它会在下一页(错误的页面)上打印结果。我需要在 results.jsp 上执行 out.println,但如果我这样做,则 jsp 无法识别该变量。你看到问题了吗?
【解决方案2】:

使用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。下面的其他答案见 cmets
猜你喜欢
  • 2014-06-12
  • 2012-11-11
  • 2013-06-06
  • 2013-01-05
  • 1970-01-01
  • 2016-08-08
  • 1970-01-01
  • 1970-01-01
  • 2015-05-29
相关资源
最近更新 更多