使用不同的参数为相同的url模式创建两个方法

时间:2013-04-06 16:10:42

标签: spring spring-mvc

我有一个网址,其中一个网址“serachUser”可能带有两个不同的值(请求参数)userId或UserName。

所以为此我创建了两个方法

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

但我得到的是模糊映射发现异常。 Spring有办法处理这种情况。

2 个答案:

答案 0 :(得分:125)

您可以使用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) {
  // ...
}

答案 1 :(得分:0)

在任何情况下,如果不传递任何值,则允许请求参数为null,否则它将为null,那么您可以编写以下代码:

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