@GetMapping("/filter/{talla}/{tipo}/{marca}/{palabra}")
public String busqueda(Model model,
@PathVariable(name = "talla", required = false) String talla,
@PathVariable(name = "tipo", required = false) String tipo,
@PathVariable(name = "marca", required = false) String marca,
@PathVariable(name = "palabra", required = false) String palabra) {
List<Zapatilla> zapatillas = servi.todasZapatillas();
// Verificar si algún parámetro tiene un valor y aplicar el filtro correspondiente
if (talla != null) {
zapatillas = servi.filtrarPorTalla(zapatillas, talla);
}
if (tipo != null) {
zapatillas = servi.filtrarPorTipo(zapatillas, tipo);
}
if (marca != null) {
zapatillas = servi.filtrarPorMarca(zapatillas, marca);
}
if (palabra != null) {
zapatillas = servi.buscarPorNombre(zapatillas, palabra);
}
model.addAttribute("zapatillas", zapatillas);
return "shoes.jsp";
}
in theory this has to work with each filter but only works if i put every single one otherwise it give me a 404 error and i dont know why
i tried solving it with changing estructure checking routes but nothing works
If you want to filter data then user Query param instead of path variable.
Something like this.
Your api will be :
http://localhost:8080/filter?talla=somevalue&tipo=somevalueYou can add all the values or skip whatever not present.