2015-02-23 48 views
0

我想從我的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 object.I我轉換到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

你可以嘗試刪除@ModelAttribute(「shoppingCart」)ShoppingCart shoppingCart作爲參數,看看它是否擊中控制器?既然你在做GET,我想知道@ModelAttribute(「shoppingCart」)沒有被傳入。 – minion 2015-02-23 15:29:55

+0

@minion:我需要shoppingCart對象的值,所以我不能刪除它。我必須將其轉換爲JSON並將其發送到視圖,即; jsp頁面。我在org.codehaus.jackson.map.ser.std.BeanSerializerBase.serializeFields(BeanSerializerBase。)上的org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:446) \t控制檯上收到以下錯誤消息。 java:150) \t at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:112) – 2015-02-23 15:34:54

+0

你從哪裏買shoppingCart?一些功能必須通過它的儀式。還提供完整的堆棧跟蹤。 – minion 2015-02-23 15:35:50

回答

0

用@RestController註釋你的控制器並返回你的購物車。 Spring會將其轉換爲JSON。

如果您想要更改轉換器,則必須爲其配置Spring,但它應該能夠在常用情況下直接使用。