Request processing failed; nested exception is org.thymeleaf.exceptions.Template

@ResponseBody 作用新体验

问题描述:

最近在学习Spingmvc的相关知识,在写控制器上类中的处理方法的时候,我发现我的方法只要写了void类型,前端请求在被处理后,服务器会报500的错误。所以我在想,难道控制器中的处理方法必须得有返回值吗?

答案:当然不是,接下来我用图文解释。

1.这是我写的控制器处理方法:

@Controller
@RequestMapping("/fruit")
public class FruitController {
    @RequestMapping("/fruit01")
    public void fruit01(@RequestParam(value = "fname") List< String> fnameList){

        fnameList.forEach(System.out::println);
    }
}

 请求处理完成会报错如下:

2.改进后的控制器处理方法:

@Controller
@RequestMapping("/fruit")
@ResponseBody
public class FruitController {
    @RequestMapping("/fruit01")
    public void fruit01(@RequestParam(value = "fname") List< String> fnameList){
        fnameList.forEach(System.out::println);
    }
}

是的,加了@ResponseBody注解后就不报错了。听我解释:

在不加@ResponseBody注解之前,springmvc默认你返回的就是一个页面。

而加@ResponseBody注解之后,默认返回的是字符串和json数据。字符串可以为空,页面当然不可以为空。因为它在返回页面的时候本质也会做字符拼接返回一个地址,这是内部服务器转发的过程。什么也不返回它怎么转发。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值