如何从JS调用控制器,以便控制器可以执行其请求映射?

问题描述 投票:1回答:2

我正在尝试将JavaScript文件调用为Java Spring MVC控制器,然后控制器将执行其请求映射功能。

我不确定是否也可以将变量传递给控制器​​,以便它可以知道要执行的特定映射。如果有人可以证明如何做到两者都会非常有帮助。如果一个人可以简单地向我展示如何通过JS调用控制器,这将非常有帮助并回答问题。

我的控制器看起来类似于以下内容:

@Controller
@RequestMapping(value = "/waterquality/scale")
public class NmWaidsController {
    @RequestMapping(value = {"","/"})
    public String homePageWaids(){
        return "waterquality/scale/calmix";
    }

我想让JS调用这个控制器。

如果可能的话,我想执行以下操作,并让JS将变量传递给方法,如下所示:

@Controller
@RequestMapping(value = "/waterquality/scale")
public class NmWaidsController {
    @RequestMapping(value = {"","/"})
    public String homePageWaids(int viewChoice){
        switch(viewChoice){
             case 1:
                 return "waterquality/scale/calmix";
                 break;
             case 2:
                 return "waterquality/scale/caloddo";
                 break;
             case 3:
                 return "waterquality/scale/calstiff";
                 break;
             default:
                 return error;
                 break;
    }

任何帮助将非常感激!提前致谢!

java javascript spring spring-mvc
2个回答
2
投票

这是您正在寻找的一个例子。

@RequestParam会帮助你。

首先,JSON对象。

var loginData = { 
       memberId : "test1",
       memberPw : "test2"
}

第二,Ajax。

 $.ajax({
        type: "POST",
        url: "YouActionName",
        data: loginData,
        success: function (result) {
            // do something.
        },
        error: function (result) {
            // do something.
        }
    });

最后,你的控制器。请记住,RequestParam的键名必须与JSON的成员键名匹配。它区分大小写,所以要小心。

@RequestMapping("/YourActionName")
public String YourActionName(@RequestParam("memberId") String id, @RequestParam("memberPw") String pw ){
  return new ModelAndView("ExpectedReturnView");
} 

附加事件监听器非常简单。

如果你有像这样的HTML ...

<div id="exampleDiv"></div>

然后使用基本id选择器,您可以附加如下所示的事件......

$('#exampleDiv').click(function(e) {
    // do what you want when click this element.
});

0
投票
<button type="submit" name="deleteAction" onclick="javascript:deleteaction();">Delete</button>

function deleteaction(){
    alert("Are you sure you want to delete the data ?");
    document.User1.action = "${pageContext.request.contextPath}/deleteUsers";
    document.User1.submit();
} 

@RequestMapping(value = "/deleteUsers", method = RequestMethod.POST)
    public ModelAndView deleteUserDetails(@ModelAttribute("User1") User user,ModelMap model) {  
        model.addAttribute("User1",new User());  
}

希望你能理解这一流程

© www.soinside.com 2019 - 2024. All rights reserved.