2012-12-16 7 views
5

wiem, że jeśli parametr wygląda następująco:Pobranie wartości z @RequestParam bez określonej nazwy

@RequestParam("userId") String userId 

mogę uzyskać wartość, wywołując w ten sposób:

requestParam.value() 

Ale jeśli nie podaj nazwę, Spring automatycznie używa nazwy zmiennej. W ten sposób:

@RequestParam String userId 

Jeśli nazwa parametru nie jest określona, ​​jak mogę uzyskać do niego dostęp? Wiem, że jest to możliwe, ponieważ Spring robi to w jakiś sposób, ale requestParam.value() jest w tym przypadku pusta.

+1

[Dokumentacja wiosna] (http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html) mówi, że wartość() zwraca "" domyślnie, a nie null. W rzeczywistości adnotacje Java nie mogą zawierać wartości null. – ignis

+0

Dzięki, poprawiłem sformułowanie – user1007895

Odpowiedz

4

Wiosna nie wypełnia żądania w oparciu o @RequestParam. Zamiast tego zapełnia argument metody adnotowany przez @RequestParam (w metodzie z adnotacją @RequestMapping). Parametr nadany adnotacji @RequestParam podaje Spring nazwę parametru żądania, który ma być używany jako ten argument. Jeśli go nie podasz, Spring domyślnie używa nazwy argumentu (więc 2 przykłady podane w pytaniu są równoważne).

Jeśli próbujesz uzyskać dostęp do parametru żądania, musisz znać jego nazwę, niezależnie od struktury, z której korzystasz.

0

Po prostu zadzwoń , jak w doSomething(userId). Wiosna wszystko dla ciebie wiąże.

3

polecam nie robić, że way.Spring używać asm do analizy pliku kodu bajtowego Java i nazwy parametru wyciąg z method.But jakiś czas ten nie działa, bo jakiś plik .class nie zawiera nazwę parametru , tylko typy parametrów, zależy to od opcji kompilatora.

Powiązane problemy