-1

我有一些从中获取的参数,我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

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

第一次迭代打印:1,19800101,well street

第二次迭代打印: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());

   }
4

1 回答 1

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数组的顺序可能(并且很可能会)与dob数组的顺序不同。

在您的情况下,您需要做的是为您的输入提供 HTML 唯一名称,例如recordNo0, recordNo1, dob0, dob1- 这样您就可以保证 bod 对应于正确的 recordNo:

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

然后,您需要遍历 servlet 中的参数或构建MyBeans 所需的任何参数并将它们收集到数组中:

List<MyBean> list = new ArrayList<MyBean>();
for(int i=0; ;i++) {
    String recNo = request.getParameter("recordNo"+i);
    if(recNo == null) break;
    MyBean bean = new MyBean();
    bean.setRecordNo(recNo);
    bean.setDob(request.getParameter("dob"+i));
    // etc
}
于 2013-04-30T23:28:57.810 回答