Моя проблема: @ModelAttribute заполняет поле формы из параметра запроса вместо формы DTO, если параметр запроса и поле формы имеют одно и то же имя.
Пример: у меня есть форма с входным полем под названием name
:
<input type="text" name="name" />
Данная форма со значением name = John,
Если я отправлю форму (веб-метод POST), используя url: http://localhost:8080/user/?name=Michael
У меня будет параметр запроса и поле формы с одинаковым именем.
Я ожидаю, что поле имени должно быть заполнено из поля формы, а не параметров запроса.
MyForm.java
public class MyForm {
private String name;
private Boolean isMale;
private Byte status;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Boolean getIsMale() {
return isMale;
}
public void setIsMale(Boolean isMale) {
this.isMale = isMale;
}
public Byte getStatus() {
return status;
}
public void setStatus(Byte status) {
this.status = status;
}
}
MyController.java
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping(value = "/", method = RequestMethod.POST)
public String index(
Model model,
@ModelAttribute("form") MyForm form,
BindingResult bindingResult) {
String name = form.getName(); //this contains value from form: Michael
Boolean isMale = form.getIsMale(); //this contains value from query parameter: true
Byte status= form.getStatus(); //this contains value from form: 1
return "views/index";
}
Когда я отправляю форму со значениями:
name = Michael
isMale = false
status = 1
, используя url с параметрами запроса:
http://localhost:8080/user/?isMale=true
, тогда isMale
будет содержать значение true
, которое заполняется из параметра запроса.
Я ожидаю, что isMale
должен содержать false
, который заполняется из поля формы.Как решить эту проблему ...?