ServletRequest.getParameterValues仅返回第一个值

时间:2015-06-02 17:10:25

标签: java jsp

我通过循环将转换为字符串值的整数分配给隐藏输入,其中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.

1 个答案:

答案 0 :(得分:1)

您正在创建三个表单。对于每个表单,将单独提出请求。由于每个表单只包含一个隐藏的输入,因此对于下面的代码

,每个请求总是只能得到一个值
 request.getParameterValues("try");

现在,如果您只需点击一下即可提交所有表格。 herehere是答案