113 votes

créer deux méthodes pour le même modèle d'url avec des arguments différents

J'ai un scénario où une url "serachUser" peut avoir deux valeurs différentes (paramètre de requête) userId ou UserName.

Pour cela, j'ai créé deux méthodes

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

Mais je reçois l'exception Ambiguous mapping found. Spring peut-il gérer cette situation ?

229voto

kryger Points 3432

Vous pouvez utiliser le params pour filtrer par les paramètres HTTP. Dans votre cas, ce serait quelque chose comme :

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

@RequestMapping(value = "/searchUser", params = "userName")
public ModelAndView searchUserByName(@RequestParam String userName) {
  // ...
}

0voto

Tek.Sailendra Points 1

De toute façon, dans le cas d'une demande de paramètre nul, si vous ne passez pas de valeur, elle sera nulle, alors vous pouvez écrire votre code :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X