SpringMVC ModelAndView跳转不成功报错Null ModelAndView returned to DispatcherServlet

一. 问题背景

后台:使用SSM,controller方法使用返回值为ModelAndView进行前端页面跳转
前端:发送ajax请求,交给controller处理,用ModelAndView进行跳转

二. 解决方法

如果是使用ajax提交请求,那么用ModelAndView.setViewName()是跳转不成功的。除非在controller处理好数据后,==在ajax的回调中使用window.location.href = 'xxx';进行跳转,如下:

html页面

 //给加入购物车按钮绑定点击事件
        $("#saveBtn").on("click", function(){
           layer.msg("hehe");
           $.ajax({
       		url: '/UsedProduct/checkUser',
       		dataType: 'json',
       		success: function(result){
       			console.info(result);
       			if(result.data==null){
       				window.location.href = '/UsedProduct/templates/layuimini/page/login.html';
       			}
       		}
       	   });
        });

controller方法

@ResponseBody
	@RequestMapping(value="/checkUser")
	public Map<String,Object> checkLoginUser(HttpServletRequest request){
		Map<String, Object> map = new HashMap<String, Object>();
		HttpSession session = request.getSession();
		User user = (User)session.getAttribute("user");
		map.put("code", 0);
		map.put("msg", "操作成功");
		map.put("count", 1);
		map.put("data", user);
		return map;
	}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 回答: 这句话是Spring MVC框架中的一条日志信息,意思是在处理请求时,DispatcherServlet收到了一个名为“springmvc”的ModelAndView对象,并且假设HandlerAdapter已经完成了请求处理。 ### 回答2: 这段话是指在Spring MVC框架中,当DispatcherServlet收到来自客户端的请求并找到相应的HandlerMapping后,会将请求交给对应的HandlerAdapter来处理。如果HandlerAdapter处理请求成功并返回了ModelAndView对象,则DispatcherServlet会将其返回给客户端。 如果HandlerAdapter没有返回ModelAndView对象,则DispatcherServlet会使用一个默认的空ModelAndView对象来返回给客户端,此时会出现上述提示信息“null ModelAndView returned to DispatcherServlet with name 'springmvc': assuming HandlerAdapter completed request handling”。 这个默认的空ModelAndView对象可以理解为是一种“不处理”的结果,它表示请求已经被处理完毕,但是没有任何可返回的数据。通常情况下,这种情况是不会出现的,因为HandlerAdapter的主要作用就是处理请求并返回相应的数据。 在开发过程中,如果出现了这种提示信息,那么就需要检查HandlerAdapter的处理逻辑是否正确,是否漏掉了返回ModelAndView对象的部分。另外,也需要检查DispatcherServlet和HandlerAdapter之间的配置是否正确,例如是否正确指定了HandlerAdapter的类型等。通过排查这些问题,就可以解决DispatcherServlet返回默认的空ModelAndView对象的问题,确保请求能够正常完成处理并返回相应的数据。 ### 回答3: null ModelAndView返回到DispatcherServlet,名称为“springmvc”:假设HandlerAdapter完成请求处理。这条信息是在SpringMVC框架中经常出现的日志信息,它告诉我们当前请求处理完成并返回了一个空的ModelAndView对象。 在SpringMVC框架中,DispatcherServlet是前置控制器,它是整个请求处理过程的核心组件。当客户端发起请求时,DispatcherServlet会根据请求的URL地址,找到合适的Controller处理器来处理请求。在Controller处理器中,对请求进行处理后,将处理结果封装到ModelAndView对象中,最终返回到DispatcherServlet,由此返回到客户端。 然而,在某些情况下,Controller处理器处理请求时可能没有返回ModelAndView对象,而直接使用response对象将数据返回给客户端。这时,SpringMVC框架会自动创建一个空的ModelAndView对象,以确保请求处理完成并返回给客户端。在这种情况下,就会出现日志信息中的“null ModelAndView”,因为没有实际的ModelAndView对象。 此外,日志信息中的“assuming handleradapter completed request handling”表示HandlerAdapter执行了请求处理完成的任务。HandlerAdapter是SpringMVC框架的核心组件之一,它负责将请求分发到合适的Controller处理器,并将处理结果封装到ModelAndView对象中返回给DispatcherServlet。 综上所述,null ModelAndView返回到DispatcherServlet,名称为“springmvc”:假设HandlerAdapter完成请求处理,表示请求处理已完成,但未返回实际的ModelAndView对象。这是SpringMVC框架中的一种正常情况,不会影响请求的处理和响应。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值