从request.getParameterMap()获取第n个值

时间:2013-04-30 22:59:41

标签: java arrays servlets map httprequest

我从request.getParameterMap()获得了一些参数,我想迭代Map并从Map中的每一行获取第n个值。以下是数据的示例

地图包含:

recordNo:1,2,3,4,5,6
dob:19800101,19800201,'',19930101,19940101,19950302
addressLn1: well street, prince street,lewis street,edward street,mills street, #3 rich street

我所拥有的是一个包含此数据的Map我想循环遍历数据并从Map数组中获取第n条记录。这就是我想要的

第一次迭代打印: 1,19800101,井街

第二次迭代打印: 2,19800201,王子街

代码:

 Map map = request.getParameterMap();

  for(int i = 0; i< map.size();i++){

    //how can i access the values with the array at the nth position            
     System.out.println("Value at " +i+ " " +map.get(i).toString());

   }

1 个答案:

答案 0 :(得分:1)

您的数据结构在概念上是不正确的,因此也是您的所有问题。

您应该将数据保存在Java Bean中:

public class MyBean {
    private String recordNo; // is it an int?
    private String dob; // is it a Date?
    private String addressLn1;
    // getters/setters omitted
}

然后以某种方式将其添加到List<MyBean>并迭代它:

List<MyBean> list = new ArrayList<MyBean>();
// list gets populated in some way, then
for(MyBean bean : list) {
     bean.getDob();
     ...
}

因此,您似乎正在处理HTTP请求并从中获取参数映射。在这种情况下你不能仅仅依赖于该地图上的参数顺序 - recordNo数组的顺序可能(并且很可能会)与{{1}的顺序不同数组。

在您的情况下,您需要做的是以HTML唯一名称输入您的输入,例如dobrecordNo0recordNo1dob0 - 这样您就可以保证bod对应正确的记录No:

dob1

然后你需要遍历servlet中的参数或者你需要构建<c:forEach varStatus="status" items="${yourCollection}"> <input type='text' name='recordNo${status.index}' value='some value'> <input type='text' name='dob${status.index}' value='some value'> </c:forEach> 并在数组中收集它们的任何内容:

MyBean