Spring入门基础 @RequestParam必须要加上参数名

今天一个大意的疏忽导致公司中断服务俩个小时。只能说学spring太囫囵吞枣。横跨了俩个版本后的spring,充分给了你自由,于是就想当然的被不起眼的bug打败。现在回想起来。看网上资料学spring时,都在说

1.直接写@RequestParam就行了,会把请求中同名参数绑定到方法上。

2.如果参数名和变量名不一致,可以使用@RequestParam(name),告诉spring,使用指定名字入参。

这种讲法明明是错误的。只有在debug模式编译时,参数名才会保留在class文件中,spring由此可以反射绑定。我们的应用明显不可能在debug模式下打包。因此第一种误人子弟啊,老师告诉你很简单的默认值做法是错误的,第二种方式才是正确的写法。


看一个简单的方法。

通过http://localhost:8080/test/hello?name=a调用,本机一切OK。但到服务器,死活报错误。原因是本机eclipse有个编译开关,会把变量写入到class文件中。因此需要明确告诉Spring入参。

右击项目,选择“属性”,打开“属性对话框”,选择“Java Compiler”然后再打开的选项卡将“Add variable attributes to generated class files”取消勾选,意思是不将局部变量信息添加到类文件中

Request processing failed; nested exception is java.lang.IllegalArgumentException: Name for argument type [java.lang.String] not available, and parameter name information not found in class file either.

public String hello( @RequestParam("name") String name){
    return name;
}

转载于:https://my.oschina.net/zhukp/blog/173042

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值