-1

取得したいくつかのパラメーターがありrequest.getParameterMap()、マップを反復処理して、マップの各行から 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 配列から n 番目のレコードを取得したいこのデータを含む Map です。これは私が欲しいものです

最初のイテレーション プリント: 1,19800101,well street

2 回目の反復印刷: 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、bod が正しい recordNo に対応することを保証できます。dob0dob1

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

次に、サーブレットまたは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 に答える