Я хочу иметь 2 кнопки в моей форме. одна кнопка добавляет ребенка, а другая кнопка должна создать семейство и перейти к другому шаблону. Мой контроллер не видит @RequestParam String action У меня что-то вроде этого:
<!DOCTYPE html>
<html lang = "en" xmlns:th = "http://www.w3.org/1999/xhtml">
<head>
<meta charset = "UTF-8">
<title>Add Child</title>
</head>
<body>
<p>Add Child or Children</p></br>
<form method = "post" action = "/addChild">
First Name <input type = "text" name = "first_name"></br>
Second Name <input type = "text" name = "second_name"></br>
Sex <input type = "text" name = "sex"></br>
Pesel <input type = "text" name = "pesel"></br>
<input type = "submit" name= "Add child"value = "Add child" ></input>
<input type = "submit" name = "Create family" value = "Create family"></input>
</form>
</body>
</html>
И контроллер
@PostMapping(value = "addChild", params = "Add child")
public String addChild(@RequestParam("first_name") String firstName,
@RequestParam("second_name") String secondName,
@RequestParam ("sex") String sex,
@RequestParam ("pesel") String pesel,
@RequestParam String action){
if (action.equals("Add child")) {
ChildForm childForm = new ChildForm();
childForm.setFirstName(firstName);
childForm.setSecondName(secondName);
childForm.setSex(sex);
childForm.setPesel(pesel);
childService.addChildToDB(childForm);
return "AddChild";
}else if (action.equals("Create family")){
return "basic";
}
return "AddChild";
}




Каждая кнопка submit выполняет действие, указанное в теге <form>. По сути, вы добавили 2 кнопки, которые будут выполнять одно и то же действие.
Вы можете создать другой элемент формы для второй кнопки отправки (она не разделяет параметры с первой):
<form method = "post" action = "/createFamily">
<input type = "submit" name = "Create family" value = "Create family"></input>
</form>
ИЛИ ЖЕ
<input type = "button" onclick = "location.href='/createFamily';" value = "Create family" />
ИЛИ ЖЕ
<a href = "/createFamily" class = "button">Create family</a>
Создайте еще одну точку входа в сервис, не смешивайте две конечные точки вместе. Вы нарушаете принцип единой ответственности по дизайну, и это навредит вам в будущем:
@PostMapping(value = "addChild")
public String addChild(@RequestParam("first_name") String firstName,
@RequestParam("second_name") String secondName,
@RequestParam ("sex") String sex,
@RequestParam ("pesel") String pesel){
ChildForm childForm = new ChildForm();
childForm.setFirstName(firstName);
childForm.setSecondName(secondName);
childForm.setSex(sex);
childForm.setPesel(pesel);
childService.addChildToDB(childForm);
return "AddChild";
}
@PostMapping(value = "createFamily")
public String createFamily(){
return 'basic';
}
У вас нет элементов
inputс именемaction.