Hej, mam taką metodę, która zwraca mi stronicowaną listę towarów, dodatkowo mogę sobie ją filtrować po fragmencie nazwy towaru
@GetMapping("/skus")
Page<PromotionSkus> promoted(
@PageableDefault(page = 1, size = 100)
@SortDefault.SortDefaults({
@SortDefault(sort = "code", direction = Sort.Direction.ASC)
}) Pageable pageable, String filter) {
return promotionSkusRepository.findByNameContaining(pageable, filter);
}
strzelam to tego endpointa tak:
getPromotionSkus(page = 1) {
axios
.get("skus", {
params: {
page: page,
filter: this.filter
}
})
.then(response => {
this.promotionSkus.items = response.data.content;
this.totalRows = response.data.totalElements;
this.perPage = response.data.size;
this.currentPage = page;
});
}
i to mi działa ok ( stronicowanie + pole input którym szukam po fragmencie nazwy towaru ).
Teraz chce dodać checkboxy ( grupa 1, grupa 2, ...... grupa 5 ) po zahaczeniu których do wyszukiwania dodam wyszukiwanie po grupach.
Na froncie więc dodałem
checkedGroups: [],
oraz pola input w stylu
<input type="checkbox" id="group_1" value="Group_1" v-model="checkedGroups">
do repozytorium metodę
Page<PromotionSkus> findByNameContainingAndPjgroupIn(Pageable var1, String name, List<String> groups); // pjgroup to pole z grupą
zmodyfikowałem endpoint
@GetMapping("/skus")
Page<PromotionSkus> promotedTest(
@PageableDefault(page = 1, size = 100)
@SortDefault.SortDefaults({
@SortDefault(sort = "code", direction = Sort.Direction.ASC)
}) Pageable pageable, String filter, SkuGroupsRequest groups) {
return promotionSkusRepository.findByNameContainingAndPjgroupIn(pageable, filter, groups);
}
no i tutaj schody. Jak widać konwersja z SkuGroupsRequest na List<String>.
public class SkuGroupsRequest {
List<String> groups;
//gettery settery
}
Na froncie po zahaczeniu grup/y mam coś takiego : [ "Group_1", "Group_2" ]
Być może skrytykujecie używanie JPA ale chciałbym to dorobić wstrzelając się w to co jest.