AJAX-вызов контроллера Spring MVC возвращает JSP-код вместо JSP View - PullRequest
0 голосов
/ 26 июня 2018

Я хочу, чтобы мой вызов 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 ]

0 голосов
/ 26 июня 2018

Ajax-вызов всегда ожидает некоторый ответ от контроллера, так что этот «ajax-вызов, чтобы поразить Spring mvc controller и вернуть jsp view» невозможен.

что вы можете сделать, это после получения успешного ответа отконтроллер, вы можете перенаправить на один URL метода контроллера, который вернет страницу JSP .

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

и в контроллере:

@RequestMapping(value="urlToDashboard")
public String dashboardPage()
{ 
return "dashboard"; // return dashboard.jsp page
}
0 голосов
/ 26 июня 2018

Здесь некоторые вещи перепутаны. Прежде всего, вы используете @ResponseBody, который вернет тело вместо вызова /login.

Во-вторых, я понимаю, что вы хотите использовать ajax из-за проверки подлинности, но почему бы не вызвать / dashboard в 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));

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...