Ajax请求 - 春控制器调用不同的方法(Ajax Request - Call different

2019-09-17 04:10发布

我一直在使用AJAX与Spring MVC的有关问题。 我里面有很多字段的形式,每场根据相关的按钮被点击检索数据。

所以,我的按钮,每一个都需要调用一个AJAX请求。 每个反应将在相关联的场被显示。

我不知道是否有可能调用不同的方法在我的春节,控制器一旦我点击不同的按钮?

换句话说,我想使多个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请求不同的功能?

Answer 1:

首先,考虑当你没有修改服务器的状态,从服务器获取数据,普遍接受的标准是使用HTTP GET方法,无法发布。 因此,对于你的前两种方法,你滥用HTTP方法。

其次,你可以单独的URL模式来使用RequestMapping注解的value属性的具体方法映射。

第三,代表您的账户信息资源的最大程度的休息方式是使用PathVariable注释,包括在实际的路径你的身份ACCOUNTID:

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

 return somefunct.getAccountDetails(accountid);  

}  

接下来,你可以使用其中的URL是建立像一棵树,其中路径的前两个部分是再次“帐户”和ACCOUNTID不同的URL模式代表您的帐户摘要:

// 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);  

}  

现在,你的提交方法,而另一方面,有副作用。 这是说,你的服务器的状态将在此请求结束不同的只是一种奇特的方式,任何获取对资源提出的要求会有所不同之前的变化比他们。 适当的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文档 。



文章来源: Ajax Request - Call different method on Spring Controller