spring 后台接收参数问题总结

不知为什么,最近很容易被一些小问题打败。今年2月十几号入职。

新电脑,配置好环境,从svn检出项目。写个controller··啥? 参数没传过来? 本来以为是小问题,结果一天才搞定··

okay 来梳理一下, 

首先,debug 发现 variables 没有变量信息,仔细一看,变量名都是 args1 之类的,后来才了解到时eclipse配置的原因,



add variable attri···   的意思是 将局部变量信息添加到class文件中,这样,断点时变量就会有名字了。 开发时加上就行了

下面说controller 接收参数的问题

通常,controller 有两种,一种是普通action,form表单提交到这儿,里面带有参数。

另一种是接口,或者说ajax调用的controller,这种一般要加上

ResponseBody  ,这样返回的User对象就会转成json格式的string 返回

@RequestMapping(value = "loadNews", method = RequestMethod.POST, produces = "application/json;charset=UTF-8")
@ResponseBody
public User loadNews(@RequestBody User user) {}

接收参数时,请务必也加上  RequestBody   ,这样,接收到的json 字符串 也会自动转为对象。否则是接不到参数的哈


下面说普通action,记得刚毕业时也遇到过接收不到参数的情况,但那时候毛都不懂。强行用对象接收了,没管那么多。

具体说来,应该是这样: 

保险起见 接收参数都用对象

@RequestMapping(value = "moreNews" )
public ModelAndView searchNews(ModelAndView model, HttpServletRequest request, NewsDO newsDo )
 
 
 

另外如果加了RequestBody   ,那么对象中的参数都不能为空。如果想直接用String接收参数,那最好加上@RequestParam,这样:

public ModelAndView searchNews(ModelAndView model, HttpServletRequest request, @RequestParam(value="title" ) String title  )
这样就能保证 接收到参数。
还有如果上图中没有选择,而你有没有加 RequestParam ,那么就会报错:
 Name for argument type [java.lang.String] not available, and parameter name information not found in class file either.
以上还是不行的话··我暂时还没遇到。遇到了再回来修改吧

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值