2012-03-12 5 views
0

異なるリクエストで異なる値を持つ可能性のある String、Double>mapマップからJSPを作成しました。JSP/Servletがポストフォームデータを取得しています

JSPが表示されます

key --> Mutable input field with value for that key 

マップの要素を反復処理することによって。フォームの下部には、マップ内のすべての値を更新するサーブレット(POST)を呼び出す送信ボタンがあります。

パラメータの変数リストを取得するには、投稿リクエストから名前がわからないのでどうすればよいですか?

今私は(擬似コードと書式設定の例外を無視して)次の操作を行うと思っています:

Map params = request.getParameterMap(); 
    Set<Entry<String, Double>> set = params.entrySet(); 
    Iterator<Entry<String, Double>> it = set.iterator(); 

    while (it.hasNext()) { 
     Entry<String, Double> e = it.next(); 
     if (map.containsKey(e.getKey())); 
      map.put(e.getKey(), e.getValue()); 
    } 

は、サーブレットにJSPからの動的なデータを取得するために速いか良い方法はありますか?

答えて

1

より高速かどうかわかりませんが、マップをJSONに変換してから、その文字列をパラメータマップを取得する代わりに単一のパラメータとしてサーブレットに戻すことができます。その後、サーブレットで、パラメータ文字列をJSON配列などにロードし、それを反復処理することができます。

これはより良いアプローチだと思う理由は、あなたのwhileループに条件を入れてエントリーセットとしてカウントさせることなく、将来的にもっと多くのパラメーターをサーブレットに渡すことができるからです。

//Create array 
    Map map = new LinkedHashMap(); 
    JSONArray jArray = new JSONArray(); 

    map.put("id", "asdf"); 
    map.put("name", "bbbdasfadsbb"); 
    map.put("address", "sadfasdfasdf"); 
    map.put("phone", "asdfdsafsdf"); 
    map.put("details", "asdasdf"); 
    map.put("randomText", "sdafasdfs"); 

    jArray.put(map); 

    //You can write this string out to a hidden field 
    //called mapAsJSONArray 
    String mapAsJSONArray = jArray.toJSONString(); 

    //....... 
    //Then in your servlet.... 
    String mapAsJSONArray = request.getParameter("mapAsJSONArray"); 
    JSONArray jsonArray = new JSONArray(mapAsJSONArray); 

    for (int i = 0; i < jsonArray.length(); ++i) { 
     JSONObject obj = jsonArray.getJSONObject(i); 
     String id = obj.getString("id"); 
     // ... 
    } 
+0

私は推測しているのは、jsonを投稿パラメータとして書き込むことができます。 –

+0

私はそれがなぜないかわかりません。あなたはAJAXや通常のHTTP経由であなたのPOSTをやっていますか?いずれにせよ、それは動作するはずです。 – bsimic

+0

通常のHTTP。それはうまくいくはずです、私がテストすると、それまでにあなたに戻ってきます。 –

関連する問題