Создать два метода для одного шаблона URL с разными аргументами

У меня есть сценарий, где один URL "serachUser" может прийти с двумя различными значениями (параметр запроса) userId или UserName.

так что для этого я создал два метода

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

Но я получаю неоднозначное картографическое исключение. Весна имеет какой-либо способ справиться с этой ситуацией.

1 ответ

Решение

Вы можете использовать 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) {
  // ...
}

В любом случае, если параметр запроса null разрешен, если вы не передадите никакого значения, оно будет нулевым, тогда вы можете написать свою команду, например:

@RequestMapping(value = "/searchUser", params = {"userID","userName"})
public String searchUserById(@RequestParam long userID,@RequestParam String 
userName, 
Model model) {    
if(userID != null){
//..
}else{
// ...
}
Другие вопросы по тегам