W jaki sposób otrzymujesz parametr adresu URL z mapowaniem kontrolera sprężyny


102

Ten problem wydaje się trywialny, ale nie mogę sprawić, by działał poprawnie. Wywołuję mapowanie kontrolera Springa za pomocą jquery ajax. Wartość someAttr jest zawsze pustym ciągiem, niezależnie od wartości w adresie URL. Proszę, pomóż mi określić, dlaczego.

-URL wywołany

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

Odpowiedzi:


166

Powinieneś używać @RequestParamzamiast @ModelAttributenp

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

Możesz nawet @RequestParamcałkowicie pominąć, jeśli wybierzesz, a Spring założy, że to jest to:

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

Na wypadek, gdyby ktoś inny szukał również oficjalnej dokumentacji @RequestParam, oto jest: docs.spring.io/spring/docs/current/javadoc-api/org/…
tobias

22

Masz wiele wariantów wykorzystania @RequestParamz dodatkowymi opcjonalnymi elementami, np

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

Jeśli nie wstawisz required = false- parametr będzie domyślnie wymagany.

defaultValue = "someValue" - wartość domyślna, która ma być używana jako rezerwowa, gdy parametr żądania nie został podany lub ma wartość pustą.

Jeśli parametr żądania i metody są takie same - nie potrzebujesz value = "someAttr"

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.