SpringMVC Returning a List Of Objects With JSON
java, jquery, json, spring, spring-mvc
Solution
Firstly please make sure your Spring version is 3.1.1 release and you have added jackson.jar in you lib, then try using below code, your code has something reduntant.
@RequestMapping(value="/getCrimeTypeList.htm", method = RequestMethod.GET)
public @ResponseBody List<CrimeType> getCrimeTypeList(@RequestParam(value="crimeCatId") Integer crimeCatId) throws Exception{
try {
return this.crimeTypeManager.getCrimeTypeList(crimeCatId);
//return "true";
} catch (Exception e) {
logger.error(e.getMessage());
return null;
}
}
$("select#offenceCatId").change(function(){
var param={crimeCatId:$(this).val()};
$.ajax({
type:'GET',
url:'getCrimeTypeList.htm',
data:param,
success:function(data){
//append options to list
}
});
});
Problem
I have two select options and i would like when the user selects one option that other is populated with data from the database. However i am having issues in getting the object list returned to the view. Controller ``` @RequestMapping(value="getCrimeTypeList.htm", method = RequestMethod.GET) public @ResponseBody List<CrimeType> getCrimeTypeList(@RequestParam(value="crimeCatId") Integer crimeCatId) throws Exception{ try { List<CrimeType> crimeTypeList = this.crimeTypeManager.getCrimeTypeList(crimeCatId); return crimeTypeList; } catch (Exception e) { logger.error(e.getMessage()); return null; } } ``` JQuery ``` $("select#offenceCatId").change(function(){ $.ajax({ type:'GET', url:'getCrimeTypeList.htm', data:{crimeCatId: $(this).val()}, headers: { Accept: 'application/json' }, dataType: 'json', success:function(data){ alert('it worked'); } }); }); ``` HTML ``` <li> <label>Offence Type</label> <form:select path="offenceTypeId" id="offenceTypeId" title="Offence Type"> <form:options items="${crimeType.crimeTypeList}" itemValue="crimeTypeId" itemLabel="crimeTypeDesc"/> </form:select> <form:errors path="offenceTypeId" class="errors" /> </li> ``` Error ``` "NetworkError: 400 Bad Request - http://localhost:8084/crimeTrack/getCrimeTypeList.htm?[object%20Object]" ``` EDITED I did some experimentation and found if the Controller is returning a String it works however once its returning an Object i am having the issues stated. FireBug ``` GET http://localhost:8084/crimeTrack/getCrimeTypeList.htm?crimeCatId=6 406 Not Acceptable Response Headers Content-Length 1067 Content-Type text/html;charset=utf-8 Date Fri, 29 Mar 2013 00:58:17 GMT Server Apache-Coyote/1.1 Request Headers Accept application/json Accept-Encoding gzip, deflate Accept-Language en-US,en;q=0.5 Host localhost:8084 Referer http://localhost:8084/crimeTrack/crime_registration.htm User-Agent Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0 X-Requested-With XMLHttpRequest ```