簡體   English   中英

Ajax請求 - 在Spring Controller上調用不同的方法

[英]Ajax Request - Call different method on Spring Controller

關於在Spring MVC中使用AJAX我一直有問題。 我有一個包含很多字段的表單,每個字段根據單擊的相關按鈕檢索數據。

因此,我的每個按鈕都需要調用一個AJAX請求。 每個響應都將顯示在相關字段中。

我想知道在點擊其他按鈕后是否可以在我的Spring控制器中調用不同的方法?

換句話說,我想對同一個控制器發出多個ajax請求,其中每個請求將在同一個控制器中調用不同的方法。

看這個例子:

    // when get account detail is clicked it will call this method  
@RequestMapping(method=RequestMethod.POST)  
    public @ResponseBody String getAccountDetails(@RequestParam(value="accountid") String accountid){  

     return somefunct.getAccountDetails(accountid);  

    }  



// when get account summary is clicked it will call this method  
@RequestMapping(method=RequestMethod.POST)  
    public @ResponseBody String getAccountSummary(@RequestParam(value="accountid") String accountid){  

      return somefunct.getAccountSummary(accountid);  

    }  



/* when submit button is clicked... Form is submitted for saving*/  
@RequestMapping(method=RequestMethod.POST)  
    public String submitForm(){  
        // save here  
        return "myform";  
    };*/  

目前,我只能有一個AJAX請求。 如何修改此代碼,以便我可以為不同的AJAX請求提供不同的功能?

首先,考慮當您從服務器檢索數據而不修改該服務器的狀態時,通常接受的標准是使用HTTP GET方法,而不是POST。 因此,對於前兩種方法,您濫用HTTP方法。

其次,您可以使用RequestMapping注釋的value屬性將各個URL模式映射到特定方法。

第三,用於表示帳戶詳細信息資源的最RESTful方式是使用PathVariable注釋並在實際路徑中包含您的標識accountid:

@RequestMapping(value="/account/{accountid}/details", method = RequestMethod.GET)
public @ResponseBody String getAccountDetails(@PathVariable(value="accountid") String accountid){  

 return somefunct.getAccountDetails(accountid);  

}  

接下來,您可以使用不同的URL模式來表示您的帳戶摘要,其中URL的構建方式類似於樹,其中路徑的前兩部分再次是“帳戶”和accountid:

// when get account summary is clicked it will call this method  
@RequestMapping(value="/account/{accountid}/summary", method=RequestMethod.GET)  
public @ResponseBody String getAccountSummary(@PathVariable(value="accountid") String accountid){  

    return somefunct.getAccountSummary(accountid);  

}  

另一方面,你的提交方法有副作用。 這只是一種奇特的方式,表示服務器的狀態在此請求結束時會有所不同,並且對該資源的任何GET請求都將與更改之前的不同。 在修改資源或向集合添加資源時使用的適當HTTP方法是HTTP POST方法。 替換集合時,HTTP方法PUT是普遍接受的選擇方法。

PUT和POST之間的另一個區別因素是PUT是冪等的,這意味着一遍又一遍地重復相同的請求不會改變服務器上的狀態。 如果多次點擊同一請求會創建更多記錄,則使用POST。

最后,此請求也可以映射到URL。 在下面的示例中,我假設您正在創建新的帳戶記錄並在數據庫的帳戶集合中插入新記錄。 因此,我使用了POST。 我還修改了你的參數列表以使用PathVariable從URL路徑中獲取accountid,並且我添加了一個RequestBody注釋,以便您可以在請求的主體中發送一個對象,該對象可以被反序列化為Java對象:

/* when submit button is clicked... Form is submitted for saving*/  
@RequestMapping(value="/account/{accountid}", method=RequestMethod.POST)  
    public String submitForm(@PathVariable String accountid, @RequestBody Account account){  
        // save here  
        return "myform";  
}

有關Spring MVC的更多信息,請查看Spring MVC上Spring文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM