2013-02-26 20 views
5

przesyłam kilka 'Fields' i 'listy' w JSON do MVC wiosny kontroler jak poniżej:Wysyłanie listy na żądanie 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) {} 
}); 

W kontrolerze Wiosna MVC handler URL wygląda następująco:

@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 

Problem to listOfId nie jest zwracany jako lista. To jest zwracany jako jeden ciąg „350234983, 378350950”

Czy ktoś może sugerować, jeśli coś jest nie tak tutaj czy jest jakiś lepszy sposób, aby otrzymać listę w odpowiedzi JSON?

Dzięki -Fonda

Odpowiedz

5

Bądź listOfIds tablicę ciągów zamiast pojedynczego łańcucha.

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

Próbowałem że początkowo, ale pojawia się to: java .lang.NumberFormatException: For inp ut ciąg: "" \t na java.lang.NumberFormatException.forInputString (NumberFormatException.java:48) – McQueen

+0

jest to becuase definicji obiektu nie jest poprawna w java: prywatny Lista ** listOfIds ** = new 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.)

zdefiniować pod powrotnej fasoli jsonView ze sterownika.

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

Controller

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"; 
} 

Zmiana 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 config w MVC-servlet.xml

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

Dzięki, ale nie używamy Gsona. Używamy Jackson – McQueen

+0

Punkt Numer 2 nie jest powiązany z gsonem, to jest wiosna – nav0611

+0

OK, dzięki czemu samo zdefiniowanie tego widoku w pliku xml zajmie się automatycznym mapowaniem? Czy muszę wykonać dodatkowe przetwarzanie w kontrolerze? – McQueen

Powiązane problemy