【问题标题】:ServletRequest.getParameterValues returns only first valueServletRequest.getParameterValues 只返回第一个值
【发布时间】:2015-06-02 17:10:25
【问题描述】:

我通过一个循环将一个转换为字符串值的整数分配给一个隐藏输入,其中 s1 是循环迭代器。

<% int k=0; 
String s1 = null;
while(mar.next()){ 
k++;
s1 = Integer.toString(k);%>
<table>
<tr><td><b>User Name </b> </td> <td><%= mar.getString("UserName")  %></td></tr>
<tr><td><b>Type </b></td><td> <%= mar.getString("Type")  %></td></tr>
<tr><td><b>Complain </b></td> <td><%= mar.getString("Complaint")  %></td></tr>
<tr><td><b>Status </b> </td> <td><%= mar.getString("Status")  %></td></tr>
<tr><td><b>Date </b> </td> <td><%= mar.getString("Date") %></td></tr>
</table> 
<form action = "demo1.jsp" method = "post">
<% out.println(mar.getString("Id")); %>
<input type="radio"  name = "<%= mar.getString("Id") %>"value="pending"checked>Pending
<input type="radio"  name = "<%= mar.getString("Id") %>" value="done">Done
<input type="submit" name = "B" id = "submit" >
<input type = "hidden" name = "try" value = <%= s1 %> >
<% out.println(s1); %>
</form>

<br>
<br>
<%
 }

下面的代码应该返回一串从 1 到 3 的值(s1 的值)

String[] vals;
vals = new String[3];
out.println(vals.length);
vals = request.getParameterValues("try");

out.println(vals.length);

for(int i=0; i<vals.length; i++){
    out.println("Hy");
    out.println(vals[i]);
} 

它只返回一个值,即第一个值,打印 vals.length 打印 1。

【问题讨论】:

  • 你能分享完整的JSP循环代码吗?
  • 我编辑了原始问题中的代码。
  • 您在哪里/如何为try 传递多个值?你有三个不同的书面形式。
  • 每个表单只有一个隐藏输入。每次我认为您的第一个表单正在提交。所以你在java代码中获得了第一个价值
  • 如果您想提交具有多个值的单个表单,则不应全部创建三个表单。 为什么你要创建三个表单?故意的?

标签: java jsp


【解决方案1】:

您正在创建三个表单。对于每个表格,都会提出单独的请求。由于每个表单仅包含一个隐藏输入,因此对于以下代码的每个请求,您将始终只获得一个值

 request.getParameterValues("try");

现在,如果您必须一键提交所有表单。 herehere 是答案

【讨论】:

    猜你喜欢
    • 2019-03-22
    • 2020-11-20
    • 1970-01-01
    • 2021-08-22
    • 2014-12-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多