当前位置: 首页 > 知识库问答 >
问题:

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

昌山
2023-03-14

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

为此我创造了两种方法

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

但我得到模糊映射发现异常。Spring能处理这种情况吗?

共有2个答案

牛华皓
2023-03-14

任何方式incase的请求参数null是允许的,如果你不传递任何值,它将是null,然后你可以写你的coad像:

@RequestMapping(value = "/searchUser", params = {"userID","userName"})
public String searchUserById(@RequestParam long userID,@RequestParam String 
userName, 
Model model) {    
if(userID != null){
//..
}else{
// ...
}
花飞尘
2023-03-14

您可以使用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) {
  // ...
}
 类似资料:
  • 问题内容: 我有一个方案,其中一个网址“ serachUser”可能带有两个不同的值(请求参数)userId或UserName。 为此,我创建了两种方法 但我越来越模糊的映射发现异常。Spring有任何方法可以处理这种情况。 问题答案: 你可以使用该参数按HTTP参数进行过滤。在你的情况下,它将类似于:

  • 我改变了切入点的顺序,它总是排在第二位。关于如何解决这个问题有什么想法吗? 更新 一旦我发布了这个问题,我就有了一个想法。我这样更改了切入点: 现在异常消失了,但仍然有一个小问题(我想这个问题更容易解决):因为ArrayList实现了可序列化,所以至少在我使用ArrayList的测试用例中,两个切入点都被执行了。 我将对此进行研究,并发布我的发现,但也感谢您的帮助;) 我将代码改为只使用一个切入点

  • 我们可以创建相同的GET URI但使用不同的查询参数吗? 例如,我有两个REST GET URI: 现在REST服务没有将两个GET方法识别为单独的,并且只将其视为声明为第一个的1 GET方法。 为什么会这样 如果您能引用任何资源,我们将不胜感激。

  • 我在Java中有两个几乎相同的方法。唯一的区别是它们有不同的参数类型。它们使用泛型并返回输入参数的类型T。我怎样才能摆脱重复的代码?下面是我的两个方法。最后,它们都使用不同的类型调用Spring。否则,方法是相同的。

  • 我使用一个Android库,它要求我创建两个类,每个类继承自不同的类 (具有公共基类) 现在我有这个代码: 我必须复制这个类来创建一个扩展,即使我的两个类共享完全相同的代码。 我简化了示例的代码,但重复可能很重要 我决定将代码放在这两个类之外的静态方法中,并在类重写的方法中调用它们,但我认为必须有一种更干净的方法来做到这一点。 你能帮我解决这个问题吗? 和都继承自。

  • 但是我有两种回购方式 如何创建两个bean,其中一个是用注入的,另一个是用注入的?