2013-04-06 79 views
38

我有一個URL「serachUser」可能帶有兩個不同的值(請求參數)userId或UserName的情況。爲不同的參數創建兩個方法相同的url模式

所以爲了這個,我創建了兩個方法

public String searchUserById(@RequestParam long userID, Model model) 
public ModelAndView searchUserByName(@RequestParam String userName) 

但我正在逐漸模糊的映射發現異常。 Spring有辦法處理這種情況。

回答

74

您可以使用params參數按HTTP參數進行過濾。在你的情況下,它會是這樣的:

@RequestMapping(value = "/searchUser", params = "userID") 
public String searchUserById(@RequestParam long userID, Model model) { 
    // ... 
} 

@RequestMapping(value = "/searchUser", params = "userName") 
public ModelAndView searchUserByName(@RequestParam String userName) { 
    // ... 
} 
+0

我已經處理了這個是接受的參數作爲一個字符串的另一種方式,然後在其上調用的Long.parseLong()。如果它解析,那麼它的userId,如果它不,則假定它的用戶名。 – CodeChimp 2013-04-08 19:42:35

+6

我認爲根據異常決定是不是一個好主意...... – Stifler 2013-04-27 17:55:39

+4

如果你想知道它是如何工作的,當你有多個參數時,你可以使用'params = {「storeId」,「containerLabel」}' – cindyxiaoxiaoli 2016-01-07 16:50:18

相關問題