2013-04-06 55 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

相关问题