多个post ajax到同一个控制器中的不同方法

时间:2015-05-12 08:54:21

标签: java ajax jsp spring-mvc post

我是这个世界的jquery,js,java等的新手。我正在使用spring mvc maven。

我有一个带有两个post函数的jsp文件,它们具有不同的url,它与同一个控制器中的两个不同方法匹配。

所以我期待=>

  • caseAsend(在myTest.jsp中)将数据发布到caseAHandler(在myController.java中)
  • caseBend(在myTest.jsp中)将数据发布到caseBHandler(在myController.java中)

但是caseAsendcaseBsend都结束了myController.java中的相同处理程序

[note] caseAsendcaseBsend由jsp文件中的不同行为调用,并且还需要在控制器中进行不同的处理。所以应该单独处理

[问]如何在myController.java中post ajaxhandling method之间进行1:1映射。 为什么即使使用不同的网址,这两个帖子都采用相同的方法?

[我的代码是这样的]:

1)myTest.jsp

function caseAsend(title, id){     
    $.ajax({
            url:'/test/{caseA}.html',
            data: 'title='+title+'&id='+id+'&something'+something,
            type:"POST",
            success: function(response){
                    alert('caseA done');
            }   
  });
}

function caseBsend(title, id){     //something wrong
     $.ajax({
                  url:'/test/{caseB}.html',
                  data: 'title='+title+'&id='+id+'&somethingelse='+somethingelse,
                  type:"POST",
                  success: function(response){
                                alert('caseB done!');
            }   
     });
}

2)myController.java

@RequestMapping(value="/test/{caseA}", method = RequestMethod.POST)
public @ResponseBody String caseAHandler(@RequestBody String  response) {
      …
      ...
}

@RequestMapping(value="/test/{caseB}", method = RequestMethod.POST)
public @ResponseBody String caseBHandler(@RequestBody String  response) {
{
    ….
    …
}

我已经看了几天类似的其他答案,但我无法清除它。我在做什么不正确?

也许对某个人了解这个世界是如此明显或简单。但我无法清楚为什么即使使用不同的网址,这两个帖子都采用相同的方法。如果有人清楚这一点,我真的很感激。

1 个答案:

答案 0 :(得分:1)

{}中的值是一个URL占位符。所以你的caseAHandler会对任何/ test / a,/ test / bb等URL做出反应。

如果您需要单独的处理程序,请尝试删除{}。

@RequestMapping(value="/test/caseA", method = RequestMethod.POST)
@RequestMapping(value="/test/caseB", method = RequestMethod.POST)

在JSP中也是如此