Yay denetleyicisi eşlemesine sahip bir url parametresini nasıl alırsınız?


105

Bu sorun önemsiz görünüyor, ancak düzgün çalışmasını sağlayamıyorum. Spring denetleyici eşlememi jquery ajax ile arıyorum. SomeAttr değeri, url'deki değerden bağımsız olarak her zaman boş dizedir. Lütfen nedenini belirlememe yardım edin.

-URL aradı

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

-Kontrolör Haritalama

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

Yanıtlar:


170

Bunun @RequestParamyerine kullanmalısınız @ModelAttribute, örneğin

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

Hatta @RequestParamseçerseniz tamamen ihmal edebilirsiniz ve Bahar bunun ne olduğunu varsayacaktır:

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

Durumda başkasının da resmi belgeler arıyor @RequestParamişte burada: docs.spring.io/spring/docs/current/javadoc-api/org/...
Tobias

23

@RequestParamEk isteğe bağlı öğelerle kullanmak için birçok seçeneğiniz var , örn.

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

Eğer koymazsanız required = false, varsayılan olarak param gerekli olacaktır.

defaultValue = "someValue" - istek parametresi sağlanmadığında veya boş bir değere sahip olduğunda geri dönüş olarak kullanılacak varsayılan değer.

İstek ve yöntem parametreleri aynıysa - ihtiyacınız yoktur value = "someAttr"

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.