我希望我的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");
}
}
当我点击Submit时,它将返回jsp代码而不是jsp视图。
该怎么做,我的代码不正确吗?
答案 0 :(得分:0)
这里有些杂乱的事情。 首先,您正在使用@ResponseBody,它将返回一个正文,而不是调用/ login。
第二,我了解到您由于身份验证需要使用ajax,但是如果身份验证成功,为什么不在javascript中调用/ dashboard。
observableArray
答案 1 :(得分:0)
Ajax调用总是希望控制器发出响应,因此,这种“ ajax调用会击中Spring mvc控制器并返回jsp视图”是不可能的。
您可以做的是从控制器获得成功响应后,您可以重定向到一个控制器方法URL,该URL将返回JSP页面。
success:function(response)
{
window.location.href = "/urlToDashboard";
}
并在控制器中:
@RequestMapping(value="urlToDashboard")
public String dashboardPage()
{
return "dashboard"; // return dashboard.jsp page
}