Spring MVC JSP Jquery调用控制器方法上的按钮点击后重定向错误

Spring MVC JSP Jquery call controller method on button click post redirect error

本文关键字:按钮 错误 重定向 JSP MVC Jquery 调用 方法 控制器 Spring      更新时间:2023-09-26
  • 假设,我是Spring MVC、JSP、Scripting/Ajax 的新手

    这是我的任务。

在SpringMVC中,我的jsp页面中有按钮,单击按钮时,我想执行一些任务(控制器方法),它不会返回任何内容。我想显示同一页。它不应该重新加载页面,也不应该重定向到其他页面

以下是我正在做的。。。

  1. 我有一个有很多按钮的页面。我正在使用引导css和按钮标签。比如

    启动

  2. 点击这个按钮,我将从控制器调用一个Ajax到方法

        $('#startApp').click(function() {
        BootstrapDialog.show({
            message : 'Sure ?!',
            buttons : [ {
                label : 'Ok',
                cssClass : 'btn-default',
                action : function(dialogItself) {
                    $.ajax({
                        type : "POST",
                        url : "/MyApp/startApp",
                        success : function(response) {
                            alert("Success");
                        }
                    });
                    dialogItself.close();
                }
            }, {
                label : 'Close',
                action : function(dialogItself) {
                    dialogItself.close();
                }
            } ]
        });
    
  3. 这就调用了控制器方法

         @RequestMapping(value = "/startApp", method = RequestMethod.POST)
            public void start() {// some operation.}
    
  4. 然而,当我这样做时,操作被执行,但在日志中,我得到了以下错误,

    根本原因调度程序:com.ibm.ws.jsp.webcontainerext.jsp错误报告:JSPG036E:找不到资源/WEB-INF/views/startApp.jsp

问题,

  • 这样做对吗
  • 我不想重定向到startApp.jsp,我希望它返回到我的index.jsp(代码所在的位置),我该如何实现这一点

您需要向客户端返回一些内容。Spring default尝试发回startApp.jsp,因为这是url(/startApp)中的内容。试试这个:这会发回一个HTTP OK状态(200)。

@RequestMapping("/startApp", method = RequestMethod.POST)
public ResponseEntity start()
{
    return new ResponseEntity(HttpStatus.OK);
}

如果您想要的话,您还可以通过返回POJO(它将由Jackson json库自动序列化)来发送回json,或者通过返回string来发送一个简单的字符串作为html内容。

ajax的目的是刷新页面的一部分。因此重定向到另一个页面是没有意义的,您可以在控制器中将返回类型设置为String

@RequestMapping(value = "/startApp", method = RequestMethod.POST)
@ResponseBody
        public String start() {
        // some operation
        return "sucess"
        }

在这里阅读我的答案将Hashmap从控制器返回到Springmvc中的JSP,了解如何在响应中传递参数