Spring mvc - POST-запрос с @ModelAttribute вызывает ненужные sql-запросы - PullRequest
0 голосов
/ 14 мая 2018

У меня есть форма с тремя выбранными входами, которые добавляются из БД в представлении. Все в порядке, и пользователь может выбрать для каждого выбора. Проблема в том, что когда я отправляю форму, @ModelAttribute генерирует те же запросы, что и запрос GET (когда эти три выбора добавляются в представление), и в том же самом поле выбора пусто после POST.

@GetMapping("/road-assistance")
public String viewPage(Model model, Locale locale) {

    model.addAttribute("roadAssistanceDto", roadAssistanceService.createRoadAssistanceDto(locale, null));
    return "admin/roadassistance/view";
}



@PostMapping("/road-assistance")
public String createRoadAssistance(Model model, Locale locale,
                                   final @Valid @ModelAttribute("roadAssistanceDto") RoadAssistanceDto roadAssistanceDto,
                                   BindingResult bindingResult) {
    if (bindingResult.hasErrors()) {
        return "redirect:/";
    }

    return "admin/roadassistance/view";
}

Почему @PostMapping генерирует одинаковые запросы и в то же время у меня нет информации в представлении / модели?

вид -

<div class="row card-pagging">
        <div class="col-sm-2 mt-3 offset-sm-2">
            <label data-th-text="#{control.panel.roadassistance.country}" 
 class="control-label"
                   for="country">Country</label>
            <select id="country" data-th-field="*{country}" class="form-control">
                <option data-th-each="countryList : ${roadAssistanceDto.countryList}"
                        data-th-value="${countryList.id}"
                        data-th-text="${countryList.countryI18n[#locale].name}"></option>
            </select>
        </div>
        <div class="col-sm-3 mt-3">
            <label data-th-text="#{control.panel.roadassistance.region}" class="control-label"
                   for="region">Region</label>
            <select data-th-field="*{region}" id="region" class="form-control">
                <option value='' data-th-text="#{control.panel.roadassistance.chooseregion}"></option>
                <option data-th-each="reg : ${roadAssistanceDto.regionList}" data-th-value="${reg.id}"
                        data-th-text="${reg.regionI18n[#locale].name}"></option>
            </select>
        </div>
        <div class="col-sm-3 mt-3">
            <label data-th-text="#{control.panel.roadassistance.city}" class="control-label"
                   for="region">City</label>
            <select data-th-field="*{city}" id="city" class="form-control">
                <option value="" data-th-text="#{control.panel.roadassistance.chooseregion}"></option>
                <option data-th-each="city : ${roadAssistanceDto.cityList}" data-th-value="${city.id}"
                        data-th-text="${city.cityI18n[#locale].name}"></option>
            </select>
        </div>
    </div>

И RoadAssistanceDto -

public class RoadAssistanceDto implements Serializable {

private Long id;

private Country country;

private Region region;

private City city;

private List<Country> countryList;

private List<Region> regionList;

private List<City> cityList;

/* GETTERS AND SETTERS /*

}

Хм ... Я думаю, что я замечаю проблему ... что-то работает, когда я связываю поля в тимьяновом листе ... но в любом случае, почему генерируются эти запросы?

...