SpringBoot的return new ModelAndView("xxx") 和 return "xxx"的区别

return new modelAndView("XXX") :我主要是在使用ajax的时候用来返回值

1. return new modelAndView("XXX") 是包括视图和数据的,
  而return "XXX" 只是视图,他会根据你配置文件里试图解析器的配置,帮你匹配好前缀,后缀然后跳转到XXX这个页面。
  比如 return "index",你配置文件里的前缀是“/templates/”,后缀是“.html,就会跳转到XXX/templates/index.html页面。
  return new modelAndView("index"),这个modelAndView 里面包括视图名view,和数据model,
  里面的view 和return "index"是一样的流程,只不过同时也会传递过去model这个数据。


2. return "XXX"  只能使用@Controller注解,不能使用 @RestController注解,否则就会返回把视图名称当字符串返回,并不会渲染视图。return new modelAndView("XXX")  使用 @RestController 和 @Controller注解都可以正常渲染视图。
   比如 一个类class加了@RestController, @RestController注解内包含了@ResponseBody。 
   @ResponseBody的意思是返回的不是视图,也就是视图解析器不回去查找该视图名的模板,
   而是以response.getWriter().write("这里就是你写的字符串");方式返回,常用于ajax求情的返回内容。

 

示例:

a) 使用@RestController注解:

@RestController
public class PersonController {
 
    @RequestMapping("mytest")
    public String indexHtml(Map<String, Object> map) {
        map.put("msg", "this is a thymeleaf test");
        return "hello";
    }
 
    @RequestMapping("mymodelviewtest")
    public ModelAndView hello(Map<String, Object> map) {
        map.put("msg", "this is model view test");
        return new ModelAndView("hello");
    }
}


return "hello" 返回视图名hello,并没有渲染视图hello.html。

return new ModelAndView("hello") 正常显示了视图内容。

b) 使用@Controller注解:

@Controller
public class PersonController {
    @RequestMapping("mytest")
    public String indexHtml(Map<String, Object> map) {
        map.put("msg", "this is a thymeleaf test");
        return "hello";
    }
 
 
    @RequestMapping("mymodelviewtest")
    public ModelAndView hello(Map<String, Object> map) {
        map.put("msg", "this is model view test");
        return new ModelAndView("hello");
    }
}


return "hello"  正常显示了视图内容。

return new ModelAndView("hello") 正常显示了视图内容。


--------------------- 
作者:ly_dengle 
来源:CSDN 
原文:https://blog.csdn.net/ly_dengle/article/details/77983180 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值