5

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

    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) {}
});

Spring MVC コントローラーでは、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がリストとして返されないことです。単一の文字列「350234983、378350950」として返されます

ここで何か問題があるかどうか、またはJSON応答でリストを受け取るより良い方法があるかどうかを誰かが提案できますか?

ありがとう -フォンダ

4

2 に答える 2

7

listOfIds を単一の文字列ではなく、文字列の配列にします。

'listOfIds' : ['350234983', '378350950'],
于 2013-02-26T21:02:40.610 に答える
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.)

以下の Bean を定義して、コントローラーから jsonView を返します。

<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) {}
});

mvc-servlet.xml の viewsResolver 構成

<bean class="org.springframework.web.servlet.view.XmlViewResolver">
   <property name="location">
       <value>/path/views.xml</value>
   </property>
</bean>
于 2013-02-27T10:12:17.923 に答える