Wyszukiwanie towarów po liście grup

0

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.

0

No i jaki jest problem, bo nie rozumiem? Nie wiesz jak zmapować SkuGroupsRequest na listę Stringów?

0

tak.
lub jeśli zrobię

    @GetMapping("/skus")
    Page<PromotionSkus> promotedTest(
            @PageableDefault(page = 1, size = 100)
            @SortDefault.SortDefaults({
                    @SortDefault(sort = "code", direction = Sort.Direction.ASC)
            }) Pageable pageable, String filter, @RequestParam("groups") List<String> groups) {

        return promotionSkusRepository.findByNameContainingAndPjgroupIn(pageable, filter, groups);
    }

dostaję "Required List parameter 'groups' is not present"

3

No to mając SkuGroupsRequest groups to listę stringów otrzymasz za pomocą groups.getGroups() ¯_(ツ)_/¯

0

Required List parameter 'groups' is not present

A może pokażesz jak wygląda request który idzie z frontu w takim razie? Bo skoro backend płacze że tego parametru nie ma, to znaczy że go nie ma i problem raczej leży po stronie frontu który to wysyła.

0

@Pinek uczucie, które mnie ogarnia po groups.getGroups() to zażenowanie. Dzięki.

1 użytkowników online, w tym zalogowanych: 0, gości: 1