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

时间:2014-11-07 10:13:39

标签: java javascript jquery spring jsp

  • 假设,我是Spring MVC,JSP,Scripting / Ajax的新手

    这是我的任务。

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

这就是我在做什么......

  1. 我有一个包含很多按钮的页面。我正在使用bootstrap css和button标签。 喜欢,

    开始

  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.JSPErrorReport:JSPG0036E:无法找到资源/WEB-INF/views/startApp.jsp

  5. 问题,

    • 这是正确的方法吗?
    • 我不想重定向到startApp.jsp,我希望它返回到我的index.jsp(代码所在的位置),我该如何实现呢?

2 个答案:

答案 0 :(得分:1)

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

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

你也可以通过返回一个POJ(它将由Jackson JSON lib自动序列化)发回一个json,如果这是你想要的,或者甚至是一个简单的字符串作为html内容返回一个字符串。

答案 1 :(得分:0)

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

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

在此处阅读我的答案Returning Hashmap From controller to JSP in Springmvc,了解如何在响应中传递参数