Создать два метода для одного шаблона 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{
// ...
}