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

问题描述 投票:0回答:2

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

为此我创建了两种方法

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

但是我遇到了模糊映射发现异常。 Spring可以处理这种情况吗?

spring spring-mvc
2个回答
258
投票

您可以使用

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) {
  // ...
}

0
投票

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

@RequestMapping(value = "/searchUser", params = {"userID","userName"})
public String searchUserById(@RequestParam long userID,@RequestParam String 
userName, Model model) {    
    if(userID != null){
      //..
    }else{
      // ...
    }
© www.soinside.com 2019 - 2024. All rights reserved.