2014-02-14 82 views
0

我正在對我的Spring控制器進行ajax調用,以從blob對象獲取數據。我將blob轉換爲String,並嘗試返回它。如果我沒有使用@ResponseBody註解,我得到一個404錯誤,但使用註解解決this.I嘗試在ajax代碼中指定不同的數據類型,但它沒有效果。 有人可以請我解釋這種行爲。還有關於更好地傳回blob數據的任何建議?由@ResponseBody影響的彈簧映射

@RequestMapping(value = "/BlobData", method = RequestMethod.GET) 
    public @ResponseBody String genBlobData(int Id) throws SQLException { 


     Blob blob = daoImpl.getBlob(Id); 
     byte[] content = blob.getBytes(1, (int) blob.length()); 
     String temp = new String(content); 
     return temp; 
    } 

而AJAX:

$.ajax({ 
        type: 'GET', 
        dataType: "text", 
         url: 'BlobData', 
         data: {Id:Id},    
         success: function(data) 
           { 
            var newWindow = window.open();newWindow.document.write(data); 
            /* alert(data); */ 
           } 
         }); 

感謝

回答

0

沒有@ResponseBody,返回的字符串預計到您的視圖(如JSP文件)的相對路徑,因此404

參見http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html#mvc-viewresolver-resolver

+0

但是,即使視圖未解決,函數genBlobData也應該被調用,爲什麼我會爲'/ BlobData'獲取404, – SKaul

+0

@SKaul我相信該方法確實會被調用(使用beakpoint或sysout來檢查它) 。就在解析視圖時,由於沒有找到,返回404。 – sp00m

+0

你說得對,該方法正在調用中!謝謝,關於傳遞blob作爲字符串的任何意見? – SKaul