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