Как вы получаете параметр 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"