Имеется метод в контроллере, который обрабатывает GET запрос. Данный метод помечен аннотацией
@GetMapping(params = {ParameterName.SORT_BY, ParameterName.SORT_TYPE})
. У данного метода в аргументах с помощью аннотации
@RequestParam
идет привязка аргумента, пришедшего из GET запроса к переменной Java типа String. Выглядит это следующим образом:
@GetMapping(params = {ParameterName.SORT_BY, ParameterName.SORT_TYPE})
public List<GiftCertificate> findAllAndSort(@RequestParam(value = ParameterName.SORT_BY) String sortBy,
@RequestParam(value = ParameterName.SORT_TYPE, required = false) String sortType) {
log.info("Sorting: {}, {}", sortBy, sortType);
return service.findAllAndSort(sortType, sortBy);
}
У аргумента sortType стоит required = false, что означает, что данный аргумент не обязательно должен присутствовать:
@RequestParam(value = ParameterName.SORT_TYPE, required = false) String sortType).
Тогда вопрос, почему при запросе вида:
-
http://localhost:8080/gift-certificates?sort_by=name&sort_type=DESC
запрос попадает в данный метод.
-
http://localhost:8080/gift-certificates?sort_by=name
не попадает в данный метод