spring 后台接收参数问题总结

来源:互联网 发布:淘宝网如何发布宝贝 编辑:程序博客网 时间:2024/05/17 20:33

不知为什么,最近很容易被一些小问题打败。今年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")@ResponseBodypublic 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.
以上还是不行的话··我暂时还没遇到。遇到了再回来修改吧

0 0