@RequestParam的使用在Spring 3中引发错误

时间:2011-09-20 11:52:53

标签: spring annotations

我正在使用@RequestParam注释来获取请求参数,并使用相同的方法将值插入到数据库中。 我已将控制器设置为重定向到同一页面,该页面包含用户输入值的文本字段,这些值正在使用@RequestParam注释进行读取。

但是在我将值输入文本字段并单击“提交”后,它会抛出此错误

  

请求处理失败;嵌套异常是java.lang.IllegalArgumentException:参数类型的名称[java.lang.String]不可用,参数名称信息也没有在类文件中找到。

我是Spring 3的新手,无法理解错误。任何人都可以对此有所了解。

提前致谢, 的Vivek

2 个答案:

答案 0 :(得分:9)

为了将request参数的值注入到handler方法参数中,应满足以下任一条件

  1. 请求参数的名称必须与方法参数的名称匹配。 例如 以下将把名为“studentName”的请求参数注入方法参数studentName

    public String goToStep(@RequestParam String studentName)

  2. 如果请求参数名称与方法参数不匹配,则必须显式指定。以下内容将“nameOfStudent”请求参数注入studentName:

    public String goToStep(@RequestParam("nameOfStudent") String studentName)

  3. 如果您的问题仍然存在,请发布您的处理程序方法代码。

答案 1 :(得分:4)

我问你正在使用的版本,因为我几天前遇到了类似的问题。我使用的是Spring 3.1.0.M2,当我在代理@Controller中使用@PathVariable时出现了同样的异常。

这是由resolved known bug引起的。你只需要切换到3.0.6或尝试每晚构建3.1.0.BUILD-SNAPSHOT。当然,后一种选择不建议用于生产环境。