java Sping Boot 处理get请求中的多个参数

toe95027  于 2023-03-16  发布在  Java
关注(0)|答案(3)|浏览(263)

我刚开始使用Sping Boot 框架。我想创建一个@GetMapping,其中基于用户在参数中输入的内容,无论是Property 1 Name(String)还是Protery 2 Designation(String)或Property 3 Salary(Integer),该方法都应该能够基于一个或多个属性获取员工列表。我可以创建单独的方法,但我不想这样做。我想这样做:

@GetMapping("/employee")
public List<Employee> getEmployee(Params parameters)
{
    // Filter the list based on parameters provided and return the list
}

还有,我不明白如何处理参数,例如,如果它是一个整数,只有一列,但如果用户输入字符串,有两列。如果用户没有指定参数名称,我必须处理。

6jygbczu

6jygbczu1#

可以使用@RequestParam Map<String, String> params将所有参数绑定到一个变量
例如

@RequestMapping(value="/params", method = RequestMethod.GET)
public ResponseEntity getParams(@RequestParam Map<String, String> params ) {

   System.out.println(params.keySet());
   System.out.println(params.values());

   return new ResponseEntity<String>("ok", HttpStatus.OK);
}
xmakbtuz

xmakbtuz2#

您可以使用@RequestParam注解定义这三个参数,并检查哪一个非空:

@GetMapping("/employee")
public List<Employee> getEmployee(@RequestParam(defaultValue = "empty") String name, @RequestParam(defaultValue = "empty") String designation, ....
{
    // check which one is not empty and perform logic
    if (!name.equals("empty")) {
      // do something 
  }
}

关于用户选择的参数:您可以使用下拉菜单或简单单选按钮进行选择,用户可以在其中自行选择搜索标准(每个标准由请求参数Map)。例如:

qco9c6ql

qco9c6ql3#

正如这里的一个答案中的注解所述,我们还可以为每个参数指定一个@RequestParam(required = false),并检查是否为空。
例如:

@GetMapping("/employee")
public List<Employee> getEmployee(
    @RequestParam(required = false) String optionA,
    @RequestParam(required = false) String optionB) {
  // Check what parameter is not null
  if (optionA != null) {
    // Do something
  }
  ...
}

相关问题