2013-02-26 7 views
5

でリストを送信:Spring MVCのコントローラで私は以下のようにSpring MVCのコントローラにいくつかの「フィールド」とJSONの「リスト」を送信していますJSONリクエスト

var data = { 
     'message' : 'Text data', 
     '**listOfIds**' : '350234983, 378350950', 

     'synchronizerToken' : formTokenId 

}; 

$.ajax({ 
     url : 'testURL.do', 
     type : 'post', 
     data : data, 
     cache : false, 
     dataType : 'json', 

     success : function (jsonResponse) {}, 

     error : function (error) {} 
}); 

をURLハンドラは次のようになります。

@RequestMapping(value = "/testURL.do", method = RequestMethod.POST) 
public ModelAndView executeTest(ListData listData) { 
     ModelAndView modelAndView = null; 
     JsonResponse jsonResponse = null; 

     modelAndView = executeTransaction(listData); 
     } 

     return modelAndView; 
    } 


ListData.java 

public class ListData{ 
    private String   message; 
    private List<String> **listOfIds** = new ArrayList<String>(); 

//getter/setters 

問題はlistOfIdsがリストとして返されません。 は、それは1つの文字列として「350234983、378350950」

を返されたものは、ここで間違っているか、JSON応答にリストを受信するための任意のより良い方法がある場合は誰もがお勧めすることはできますか?

おかげで、 -Fonda

答えて

5

はlistOfIds文字列の配列の代わりに、単一の文字列を作成します。

'listOfIds' : ['350234983', '378350950'], 
+0

私が最初に試みたが、私はこれを取得: javaの.lang.NumberFormatException:inpの場合UTの文字列: "" java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)で \t – McQueen

+0

は、オブジェクト定義becuaseそれをあるがJavaで正しくありません: プライベートリスト ** listOfIds ** =新しいArrayListを(); – McQueen

0

1)

Add gson jar 

import com.google.gson.Gson;//import 

Gson gson = new Gson();//create instance 

gson.toJson(ListData);//convert it to json 

2)

コントローラからビーンリターンjsonView下に定義します。 MVC-servlet.xmlで

<bean name="jsonView" class="org.springframework.web.servlet.view.json.JsonView"/> 

コントローラ

import org.springframework.ui.ModelMap; 

@RequestMapping(value = "/testURL.do", method = RequestMethod.POST) 
public String executeTest(ModelMap model, ListData listData) { 
    ModelAndView modelAndView = null; 
    JsonResponse jsonResponse = null; 
    modelAndView = executeTransaction(listData); 
    model.addAttribute("paramName", modelAndView); 
    } 

    return "jsonView"; 
} 

AJAXの変更

$.ajax({ 
    url : 'testURL.do', 
    type : 'post', 
    data : data, 
    cache : false, 
    dataType : 'json', 

    success : function (jsonResponse) { 
     var jsonValue = $.parseJSON(jsonResponse.paramName); 
    }, 

    error : function (error) {} 
}); 

viewsResolverの設定は

<bean class="org.springframework.web.servlet.view.XmlViewResolver"> 
    <property name="location"> 
     <value>/path/views.xml</value> 
    </property> 
</bean> 
+0

ありがとうございますが、私たちはGsonを使用していません。私たちはジャクソンを使用しています – McQueen

+0

ポイント番号2はgsonに関連していません、それは春です – nav0611

+0

ありがとう、xmlファイルでこのビューを定義するだけで自動的にマッピングされますか?または、コントローラで追加の処理を行う必要がありますか? – McQueen

関連する問題