У меня есть select2 (который использует AJAX запрос для извлечения данных из удаленного источника, в моем случае это SpringBoot API). Мне удалось получить данные, которые я хотел. Однако у меня возникают проблемы с получением в моей конечной точке поискового запроса, поэтому я могу отфильтровать результаты на основе того, что пользователь вводит:
Ниже мой код, и запрос AJAX с select2, и мой Конечная точка SpringBoot с соответствующей функцией.
$(".select2-single").select2({
ajax: {
url: 'http://localhost:8080/credenciamento/busca-procedimentos/',
dataType: 'json',
delay: 500,
data: function (params) {
console.log(params.term);
return {
q: params.term, // search term
};
},
processResults: function (response) {
var procedures = [];
for (let i = 0; i < response.length; i++) {
procedures.push({
id: response[i].id,
text: response[i].descricao
})
}
return { results: procedures }
},
cache: true,
},
});
И здесь моя Java функция:
@GetMapping(path = "/credenciamento/busca-procedimentos/")
@ResponseBody
public List<Procedimento> buscaProcedimentos(@PathVariable(value = "q", required = false) String query) {
System.out.println(query);
List<Procedimento> procedimentos = procedimentoService.findAll();
int size = procedimentos.size();
if (StringUtils.isEmpty(query)) {
return procedimentos.subList(0, size);
}
Procedimento[] procedimentosArray = new Procedimento[size];
procedimentosArray = (Procedimento[]) procedimentos.toArray();
return (List<Procedimento>) Arrays.stream(procedimentosArray)
.filter(procedimento ->
procedimento.getDescricao().toLowerCase().contains(query)
).limit(2);
}
PS: каждый раз, когда функция выполняется, мой результат system.out.println равен нулю. Я попытался изменить с @PathVariable на @RequestParam, но он выдает исключение, говоря, что из запроса не было получено никаких параметров, и я попытался изменить маршрут на «/ credenciamento / busca-procdimento / {query}», но каждый раз запрашивать имеет значение null, и в этом случае функция даже не выполняется, поскольку в запросе нет запроса.