我正试图从我的JSP页面中击中控制器。我编写了以下函数,在单击特定链接时将调用该函数。
功能实现如下所示:
function categorySearchBasedOnParentId(name,id){
$.ajax({
url:"${pageContext.request.contextPath}/customer/get_categoriesByParentId.shx",
data: 'id='+id,
success:function(data){
var obj1 = jQuery.parseJSON(data);
var obj2 = obj1.tempCategoriesList;
$("#subCategoriesFilter").html(buildSub(obj2));
},
error:function(data,status,err){
alert("Error occured while searching the categories based on the parent category id");
}
});
在上面的函数中,我试图点击控制器URL并且控制器返回JSON对象。我正在将JSON转换为JavaScript对象并迭代它的值以显示在特定的div标签中。
我在春天写的控制器如下。
@RequestMapping(value = "/customer/get_categoriesByParentId.shx",method = RequestMethod.GET, headers="Accept=*/*")
public @ResponseBody String getCategoriesByParentId(Model model,HttpSession session,
@ModelAttribute("shoppingCart") ShoppingCart shoppingCart,
@RequestParam("id") String id) throws IOException{
shoppingCart.setTempCategoriesList(categoryDao.getAllCategoriesByParentCategoryId(id));
model.addAttribute("shoppingCart", shoppingCart);
String json = JSONUtil.createJsonString(shoppingCart);
System.out.println(json);
return json;
}
我做了以下测试: 1)该值已正确传递给函数。我已经惊动并看到了。 2)可以在另一个项目中完成相同的控制器调用。它返回JSON对象。
我在控制台的无限时间内收到以下错误。
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446)
at org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase.java:150)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112)
我几乎浪费了整整一天的时间。我想要帮助。请帮帮我。
答案 0 :(得分:0)
使用@RestController注释您的控制器并返回您的购物车。 Spring会将其转换为JSON。
如果您想更改转换器,您必须为此配置Spring,但它应该可以在常规用例中使用。