Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc-带有@ModelAttribute的POST请求会导致不必要的sql查询_Spring_Spring Mvc_Modelattribute - Fatal编程技术网

Spring mvc-带有@ModelAttribute的POST请求会导致不必要的sql查询

Spring mvc-带有@ModelAttribute的POST请求会导致不必要的sql查询,spring,spring-mvc,modelattribute,Spring,Spring Mvc,Modelattribute,我有一个带有三个select输入的表单,它们是从视图中的db添加的。一切正常,用户可以为每次选择进行选择。问题是,当我提交表单时,@ModelAttribute生成的查询与GET请求相同,当这三个select被添加到视图中时,select字段在POST之后为空 @GetMapping("/road-assistance") public String viewPage(Model model, Locale locale) { model.addAttribute("roadAssis

我有一个带有三个select输入的表单,它们是从视图中的db添加的。一切正常,用户可以为每次选择进行选择。问题是,当我提交表单时,@ModelAttribute生成的查询与GET请求相同,当这三个select被添加到视图中时,select字段在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>
还有道路助理-

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 /*

}

嗯。。。我想我注意到了这个问题。。当我绑定胸腺中的字段时,有一些东西在工作。。。但无论如何,为什么要生成这些查询?

请添加一些查看表单代码!添加roadAssistanceDto的代码@DariushJafari不可以只设置一个断点,然后检查调用堆栈,看看调用发生的原因。即使有一些文档确切地解释了@modeldattribute是如何工作的,我还是更喜欢调试方法——代码从不说谎:在文档中查找一种可能是方法参数上的@modeldattribute,这表明应该从模型中检索参数。如果模型中不存在参数,则应首先实例化该参数,然后将其添加到模型中。