如何接收带有弹簧控制器映射的 url 参数

这个问题看起来微不足道,但我无法让它正常工作。我用 jquery ajax 调用我的 Spring 控制器映射。不管 url 中的值是什么,somAttr 的值始终是空字符串。请帮我查明原因。

网址呼叫

http://localhost:8080/sitename/controllerLevelMapping/1?someAttr=6

- 控制器映射

@RequestMapping(value={"/{someID}"}, method=RequestMethod.GET)
public @ResponseBody int getAttr(@PathVariable(value="someID") final String id,
@ModelAttribute(value="someAttr") String someAttr) {
//I hit some code here but the value for the ModelAttribute 'someAttr' is empty string.  The value for id is correctly set to "1".
}
226664 次浏览

你应该使用 @RequestParam而不是 @ModelAttribute,例如。

@RequestMapping("/{someID}")
public @ResponseBody int getAttr(@PathVariable(value="someID") String id,
@RequestParam String someAttr) {
}

如果你选择的话,你甚至可以完全省略 @RequestParam,Spring 会假设它就是 @RequestParam:

@RequestMapping("/{someID}")
public @ResponseBody int getAttr(@PathVariable(value="someID") String id,
String someAttr) {
}

使用带有附加可选元素的 @RequestParam有很多变体,例如。

@RequestParam(required = false, defaultValue = "someValue", value="someAttr") String someAttr

如果你不把 required = false-参数将默认需要。

defaultValue = "someValue"-当没有提供请求参数或请求参数值为空时用作回退的默认值。

如果 request 和 method param 是相同的-则不需要 value = "someAttr"