SpringBoot автоматически обрезает пробелы в списке @RequestParam, если указан только 1 параметр - PullRequest
0 голосов
/ 07 апреля 2020

У меня есть REST API, который поддерживает фильтрацию по нескольким значениям:

@GetMapping("/employees")
public ResponseEntity<List<Employee>> getAllEmployees(
            @RequestParam(name = "role", required = false) List<String> roles) {

}

Вызовите этот API, предоставив следующую информацию: / employee? Role = ADMIN, тогда список ролей будет иметь 1 элемент:

  • role = ADMIN (без пробела)

Но когда я вызываю этот API с несколькими ролями: / employee? Role = ADMIN & role = STUDENT, тогда роли будут иметь 2 элемента:

  • role = ADMIN (с пробелом в заголовке)
  • role = STUDENT

Как можно избежать этого автообрезания здесь?

Спасибо

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

вы можете попробовать эту инструкцию в вашем методе для автоматической обрезки пространства в вашем списке

List<String> rolesWithoutSpaces = roles.stream().map(String::trim).collect(Collectors.toList());
0 голосов
/ 15 апреля 2020

Вы можете просто сделать свой вызов таким образом,

/employees?role= ADMIN,STUDENT

Поскольку значения разделены запятыми, Spring Controller будет интерпретировать их как два различных значения List<String> roles по умолчанию.

Если вы затем распечатаете их внутри вашего контроллера, вы увидите, что любое пустое пространство автоматически обрезается.

Сделано ли это for (String s : roles) System.out.println("Role :" + s); внутри контроллера, и мои журналы,

Role :ADMIN
Role :STUDENT
...