代码之家  ›  专栏  ›  技术社区  ›  bharath

Ajax调用到Spring MVC控制器返回JSP代码而不是JSP视图

  •  0
  • bharath  · 技术社区  · 6 年前

    我想打我的ajax电话 Spring mvc controller 然后返回一个 jsp view

    为此,我编写了以下代码

    $(document).on("click","#loginSubmit",function(event){
    
        var userName=$("#userName").val();
        var pwd=$("#password").val();
    
            var url = contextPath+"/authenticate";       
                $.ajax({        
                    url : url,          
                    type:"get",   
                    data:"&userName="+userName+"&pwd="+pwd,  
                    contentType:'application/json; charset=utf-8',  
                    async: false,       
                    success:function(response) 
                    {        
    
                        console.log(response);
                    }  
                }); 
    });
    

    这是我的控制器

    @RequestMapping(value="/authenticate") 
        @ResponseBody
        public ModelAndView dashboard(@RequestParam("userName") String username,@RequestParam("pwd") String pwd) throws IOException
        { 
         boolean res=false; 
    
    
             try { 
    
        res=service.authenticate(username,pwd); 
             }
             catch (Exception e) {
                e.printStackTrace(); 
            }    
             if(res =true)
             {
                 return new ModelAndView("dashboard");  
             }
             else {
                 return new ModelAndView("login");
             }
    
        }
    

    当我点击提交时,它返回的是jsp代码而不是jsp视图。

    怎么办,我的代码不正确吗?

    2 回复  |  直到 6 年前
        1
  •  0
  •   Rey333    6 年前

    这里有些事情搞混了。 首先,您使用的是@responsebody,它将返回一个body而不是调用/登录。

    第二,我理解您想要使用Ajax,因为验证验证,但是如果认证成功,为什么不调用JavaScript中的调用/仪表板。

    @RequestMapping(value = "/authenticate", method = RequestMethod.POST)
    @ResponseBody
    public AuthenticateDto dashboard(@RequestParam("userName") String username,@RequestParam("pwd") String pwd) throws IOException
        { 
        return new AuthenticateDto(service.authenticate(username,pwd));
    
    }
    
        2
  •  0
  •   Alien    6 年前

    Ajax调用总是期望来自控制器的一些响应,所以这种“Ajax调用来弹出Spring MVC控制器并返回JSP视图”是不可能的。

    你能做的就是 在从控制器获得成功响应之后,您可以重定向到一个将返回JSP页面的控制器方法URL。 是的。

    success:function(response) 
    {        
    window.location.href = "/urlToDashboard";
    }  
    

    在控制器中:

    @RequestMapping(value="urlToDashboard")
    public String dashboardPage()
    { 
    return "dashboard"; // return dashboard.jsp page
    }