Spring + Thymeleaf problem z drop-down llist

Spring + Thymeleaf problem z drop-down llist
AM
  • Rejestracja:około 17 lat
  • Ostatnio:około 2 lata
0

Potrzebuję zrobić coś takiego: mam dwie listy <select>. Pierwsza zawiera nazwy województw i po wybraniu jednego z nich, w drugiej liście mają się pojawić miasta z danego województwa.
Niestety, udało mi się tylko wyświetlić tę pierwszą listę z województwami i drugą pustą.
Po wybraniu województwa, zawartość pierwszej listy znika a druga lista pozostaje pusta przez cały czas
Proszę o pomoc

Kopiuj
<form th:method = "POST" th:action="@{/select_voivodeship}" th:object="${voivodeships}">
    <label>Wybierz województwo:
        <select class="form-control" onchange="this.form.submit()"  th:field="${voivodeships}">
            <option value=""> -- </option>
            <option th:each="voivodeship : ${voivodeships}" th:value="${voivodeship.getId()}" th:text="${voivodeship.getName()}"></option>
        </select>
    </label>
</form>

<form th:method = "POST" th:action="@{/select_city}" th:object="${cities}">
    <label>Wybierz miasto:
        <select>
            <option value=""> -- </option>
            <option th:each="city : ${cities}" th:value="${city.getId()}" th:text="${city.getName()}" ></option>
        </select>
    </label>
</form>
Kopiuj
 @GetMapping("/taxoffice")
    public String getVoivodeship(Model model) {

        List<Voivodeship> voivodeships = voivodeshipService.findAll();
        model.addAttribute("voivodeships", voivodeships);
        return "taxoffice";
    }

  @PostMapping("/select_voivodeship")
    public String selectVoivodeship(@ModelAttribute("voivodeships") @RequestBody Voivodeship voivodeship, BindingResult bindingResult, Model model) {

        if (bindingResult.hasErrors()) {
            System.out.println("There were errors");
            bindingResult.getAllErrors().forEach(error -> {
                System.out.println(error.getObjectName() + " " + error.getDefaultMessage());
            });
            return "taxoffice";
        }
        else {
            List<City> cities = cityService.getAllCitiesByVoivodeship(voivodeship.getId());
            return "/taxoffice";
        }
    }
edytowany 2x, ostatnio: Amakesh
Mateusz Golda
Przypisujesz miasta do zmiennej, ale nic z nimi dalej nie robisz. Musisz to jakoś przekazać do templatki jak w metodzie wyżej.
Charles_Ray
  • Rejestracja:około 17 lat
  • Ostatnio:około 9 godzin
  • Postów:1875
1

Masz na stronie 2 różne formularze i każdy submituje się niezależnie przeładowując stronę (tak obstawiam). Chyba nie o to chodziło ;)


”Engineering is easy. People are hard.” Bill Coughran
K5
Podziwiam, że chce Ci się odpowiadać w tych wszystkich TLowych tematach. Mi to już nawet nie chce się pisać, żeby porzucili to i zajęli się normalnym REST API testowanym w postmanie, a dopiero potem dopisywali front po ludzku w jakims angularze/react'cie.
Charles_Ray
Angular/React to jedno, wiedza jak działa HTTP i formularze - drugie :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.