Spring Controller中的PathVariable

时间:2012-01-31 10:19:28

标签: java spring spring-mvc controller path-variables

我正在尝试映射网址/locations/{locationId}/edit.html - 这似乎与此代码一起使用:

@Controller
@RequestMapping( "/locations" )
public class LocationController
{
  @RequestMapping( value = "/{locationId}/edit.html", method = RequestMethod.GET )
  public String showEditForm( Map<String, Object> map, @PathVariable int locationId )
  {
    map.put( "locationId", locationId );
    return "locationform";
  }
}

将提及的网址结果称为例外:

java.lang.IllegalArgumentException: Name for argument type [int] not available, and parameter name information not found in class file either.

我是否以错误的方式使用@PathVariable Annotation?

如何正确使用?

3 个答案:

答案 0 :(得分:35)

应为@PathVariable("locationId") int locationId

答案 1 :(得分:16)

您应该将value参数添加到@PathVariable,例如

 public String showEditForm(
       @PathVariable("locationId") int locationId,
       Map<String, Object> map) {
    // ...
 }

答案 2 :(得分:0)

JDK 7启用参数名称内省

参数名称展示在JDK7中可用,否则您必须在注释中设置它。

你应该在明确使用之前使用JDK博览会(比如Johan和Moniul建议的那样)作为注释的一部分,因为如果你想改变参数键,你只需要编辑变量名而不是任何其他的密码。其他行和/或类中的注释规范。让我们称之为单一来源。