2016-02-09 37 views
1

我創建了一個JSP頁面,並帶有一些文本字段。點擊提交按鈕,它會調用Ajax調用將數據發佈到Spring控制器。現在,在將數據保存到數據庫後,控制器將創建一個JSON響應。我希望這個響應在JSP文件中可用。下面是我的文件代碼...如何接收從spring控制器到jsp頁面的json響應

JSP文件:

$(document).ready(function(){ 
     $("#submitButton").click(function(e){ 
      var formData = getFormData(); 
      $.ajax({ 
       type: 'POST', 
       'url': 'http://localhost:8080/Test_ReportingUI/addDb.htm', 
       data: {jsonData: JSON.stringify(formData)}, 
       dataType: 'json', 
       success: function(response){ 
        try{ 
         var strResponse=jQuery.parseJSON(response); 
        }catch(err){} 
        if(response.status=='ok') 
        { 
         alert("details added"); 
        } 
        else 
        { 
         alert("error happened"); 
        } 

       }, 
       timeout: 10000, 
       error: function(xhr, status, err){ 
        if(status=='timeout') 
        { 
         alert('Request time has been out',''); 
        } 
        console.log(status,err); 
       } 
      }); 
     }); 
    }); 

春天控制器的方法:

@Autowired RWCustomerService rwCustomerService; 
@RequestMapping (value="addDb.htm", method=RequestMethod.POST) 
String addEditCustomer(@RequestParam String jsonData) 
{ 
    System.out.println("hello world"); 
    System.out.println("-----------------\n"+jsonData); 
    ModelAndView modelAndView=new ModelAndView("custDB_setup"); 
    JSONObject jsonResponse = new JSONObject(); 
    try{ 
     JSONObject requestedJSONObject = new JSONObject(jsonData); 
     String dbName = requestedJSONObject.getString("dbName"); 
     String dbUserName = requestedJSONObject.getString("dbUserName"); 
     String dbPassword = requestedJSONObject.getString("dbPassword"); 
     Iterator it=requestedJSONObject.keys(); 
     while(it.hasNext()){ 
      System.out.println("Oo..: "+it.next()); 
     } 
     RWReportCustomerDB rwReportCustomerDB = new RWReportCustomerDB(); 
     rwReportCustomerDB.setDbName(dbName); 
     rwReportCustomerDB.setDbLogin(dbUserName); 
     rwReportCustomerDB.setDbPassword(dbPassword); 
     rwCustomerService.saveDb(rwReportCustomerDB);   
     jsonResponse.put("status", "ok");  

    } 
    catch(Exception ex){ 
     ex.printStackTrace(); 
    } 
    return jsonResponse.toString(); 
} 

數據得到保存在數據庫中,因此JSON數據到達控制器方法。但是,我無法看到jsp頁面上的提示框,即「已添加詳細信息」。我該如何解決這個問題。

回答

4

您需要添加@ResponseBody註釋

@RequestMapping (value="addDb.htm", method=RequestMethod.POST) 
@ResponseBody String addEditCustomer(@RequestParam String jsonData) 
{...} 

您不必手動編寫JSON,Spring使用傑克遜庫幕後到序列化對象JSON。請參閱Spring 3 MVC and JSON example

@ResponseBody添加爲返回值。文春認爲

  • 傑克遜庫在項目類路徑中存在標註有@ResponseBody

Spring將自動處理JSON轉換

  • mvc:annotation-driven啓用
  • 迴歸方法。

  • +0

    你真棒! – JPG

    相關問題