如何通过spring控制器映射接收url参数


96

这个问题看似微不足道,但我无法使其正常工作。我正在用jquery ajax调用Spring控制器映射。无论URL中的值如何,someAttr的值始终为空字符串。请帮助我确定原因。

-URL称为

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".
}

Answers:


157

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

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

@RequestParam如果选择,您甚至可以完全省略,Spring会假设是这样:

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

22

您有很多@RequestParam与其他可选元素一起使用的变体,例如

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

如果您不输入required = false-默认情况下,param是必需的。

defaultValue = "someValue" -当没有提供request参数或具有空值时用作后备的默认值。

如果请求和方法参数相同-您不需要 value = "someAttr"

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.