2012-12-16 164 views
5

我知道,如果一個參數是這樣的:獲取值,而不指定名稱

@RequestParam("userId") String userId 

我可以通過調用該獲得的價值:

requestParam.value() 

但如果我不這麼做指定一個名字,Spring自動使用變量名稱。像這樣:

@RequestParam String userId 

如果沒有指定參數名稱,我該如何訪問它?我知道它是可能的,因爲Spring以某種方式做它,但requestParam.value()在這種情況下是空的。

+1

[Spring documentation](http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/bind/annotation/RequestParam.html)表示value()默認返回「」,不爲null。事實上,Java註釋不允許包含null。 – ignis

+0

謝謝,我已更正措辭 – user1007895

回答

4

Spring不會基於@RequestParam填充請求。而是填充用@RequestParam註釋的方法參數(在用@RequestMapping註解的方法中)。給@RequestParam註解的參數告訴Spring你希望它用作參數的請求參數的名稱。如果你沒有提供,Spring會默認使用參數的名字(所以你在問題中給出的兩個例子是等價的)。

如果您嘗試訪問請求參數,則無論您使用的是哪種框架,都需要知道它的名稱。

0

只需撥打userId,如doSomething(userId)。春天把所有東西都捆綁在你身上。

3

建議您不要這樣做。使用asm 來分析java字節碼文件,並提取一個方法的參數名稱。但有時候這是行不通的,因爲某些.class文件不包含參數名稱,只是參數類型,它取決於編譯器選項。