Hallo,
die Frage ist vielleicht etwas dumm, beschäftigt mich aber sehr.
Es geht um ein Beispiel, wobei eine Form ausgewertet wird.
Zuerst die Dateien:
HTML-Seite "form"
2. Der Conroller
3. PersonForm
Die "WebApplication"- Klasse ist normal.
Meine Frage ist einmal, dass Argumente der Methodenaufrufe insbesondere im Controller nicht verarbeitet werden. Es funktioniert aber dennoch.
Die Frage ist zum zweiten, welche Namen ich vergeben kann. Muss ein Controller den Begriff "Controller" im Namen haben?
Wo kann ich das sonst nachlesen, wie ich Namen der Klassen und Variablen gestalten muss?
Die Beziehung des HTML zum Controller ist mir auch nicht klar. Gibt es da eine gute Quelle, wo ich das nachlesen kann?
die Frage ist vielleicht etwas dumm, beschäftigt mich aber sehr.
Es geht um ein Beispiel, wobei eine Form ausgewertet wird.
Zuerst die Dateien:
HTML-Seite "form"
HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form action="#" th:action="@{/}" th:object="${personForm}" method="post">
<table>
<tr>
<td>Name:</td>
<td><input type="text" th:field="*{name}" /></td>
<td th:if="${#fields.hasErrors('name')}" th:errors="*{name}">Name Error</td>
</tr>
<tr>
<td>Age:</td>
<td><input type="text" th:field="*{age}" /></td>
<td th:if="${#fields.hasErrors('age')}" th:errors="*{age}">Age Error</td>
</tr>
<tr>
<td><button type="submit">Submit</button></td>
</tr>
</table>
</form>
</body>
</html>
Java:
package hello;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Controller
public class WebController implements WebMvcConfigurer{
public void addViewControllers(ViewControllerRegistry registry) {
registry.addViewController("/results").setViewName("results");
}
@GetMapping("/")
public String showForm(PersonForm personForm) {
return "form";
}
@PostMapping("/")
public String checkPersonInfo(@Valid PersonForm personForm, BindingResult bindingResult) {
if (bindingResult.hasErrors()) {
return "form";
}
return "redirect:/results";
}
}
3. PersonForm
Java:
package hello;
import javax.validation.constraints.Min;
import javax.validation.constraints.Size;
public class PersonForm {
@Size(min=2, max=30)
private String name;
@Min(18)
private Integer age;
@Override
public String toString() {
return "PersonForm [name=" + name + ", age=" + age + "]";
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
Die "WebApplication"- Klasse ist normal.
Meine Frage ist einmal, dass Argumente der Methodenaufrufe insbesondere im Controller nicht verarbeitet werden. Es funktioniert aber dennoch.
Die Frage ist zum zweiten, welche Namen ich vergeben kann. Muss ein Controller den Begriff "Controller" im Namen haben?
Wo kann ich das sonst nachlesen, wie ich Namen der Klassen und Variablen gestalten muss?
Die Beziehung des HTML zum Controller ist mir auch nicht klar. Gibt es da eine gute Quelle, wo ich das nachlesen kann?