Как вы получаете параметр url с сопоставлением контроллера spring
этот вопрос кажется тривиальным, но я не могу заставить его работать должным образом. Я вызываю свой весенний контроллер сопоставления с jQuery ajax. Значение для someAttr всегда является пустой строкой, независимо от значения в url-адресе. Пожалуйста, помогите мне определить, почему.
-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".
}
2 ответа:
вы должны использовать
@RequestParam
вместо@ModelAttribute
, например,@RequestMapping("/{someID}") public @ResponseBody int getAttr(@PathVariable(value="someID") String id, @RequestParam String someAttr) { }
вы даже можете опустить
@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
- param будет требоваться по умолчанию.
defaultValue = "someValue"
- значение по умолчанию для использования в качестве резервного, если параметр запроса не указан или имеет пустое значение.если запрос и метод param одинаковы-вам не нужно
value = "someAttr"