Как вы получаете параметр URL с отображением контроллера пружины - PullRequest
77 голосов
/ 11 августа 2011

Эта проблема кажется тривиальной, но я не могу заставить ее работать должным образом. Я вызываю сопоставление контроллера Spring с помощью jquery ajax. Значение для someAttr всегда пустая строка независимо от значения в URL. Пожалуйста, помогите мне определить, почему.

-URL называется

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

-Controller Mapping

@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 ]

122 голосов
/ 11 августа 2011

Вы должны использовать @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) {
}
18 голосов
/ 05 сентября 2016

У вас есть много вариантов использования @RequestParam с дополнительными дополнительными элементами, например,

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

Если вы не поставите required = false - по умолчанию потребуется параметр.

defaultValue = "someValue" - значение по умолчанию для использования в качестве запасного варианта, если параметр запроса не указан или имеет пустое значение.

Если параметры запроса и метода совпадают - вам не нужно value = "someAttr"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...