2013-04-06 10 views
38

Mam scenariusz, w którym jeden adres URL "serachUser" może pochodzić z dwóch różnych wartości (parametr żądania) userId lub UserName.utworzyć dwie metody dla tego samego adresu URL z różnymi argumentami

więc na to, że stworzyliśmy dwie metody

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

ale jestem coraz Niejednoznaczne mapowanie znaleziono wyjątku. Wiosna może w jakiś sposób poradzić sobie z tą sytuacją.

Odpowiedz

74

Możesz użyć parametru params do filtrowania według parametrów HTTP. W twoim przypadku byłoby coś takiego:

+0

Innym sposobem, w jaki to zrobiłem, jest zaakceptowanie parametru jako String, a następnie wywołanie na nim Long.parseLong(). Jeśli parsuje, to jego userId, jeśli nie, przyjmij jego nazwę użytkownika. – CodeChimp

+6

Myślę, że decydowanie na podstawie wyjątku nie jest dobrym pomysłem ... – Stifler

+4

Jeśli chcesz wiedzieć, jak to działa, gdy masz wiele paramów, możesz użyć 'params = {" storeId "," containerLabel "}' – cindyxiaoxiaoli

Powiązane problemy