Es gibt die Element
Klasse:thymeleaf Verwendung auf Formulardaten an einen Controller-Post, die @ModelAttribute (komplexe Objekte) verwendet
public class Element {
private Long id;
private Name name;
// Getters and Setters ...
}
Und die Name
Klasse:
public class Name {
private String en;
private String fr;
private String de;
// Getters and Setters ...
}
Es gibt eine getElementsController ist:
@GetMapping("/elements/create")
public String getElementsCreate() {
return "private/new-element";
}
Es gibt einen NewElementController
Controller:
@PostMapping("/elements/create")
public String postElementsCreate(@ModelAttribute Element element) {
System.out.println(element)
return null;
}
Es ist eine Form, die Beiträge Daten an die NewElementController:
<form method="post" th:object="${element}" th:action="@{/elements/create}">
<input type="text" value="1" name="id" placeholder="Id"/>
// How should I make the input fields for:
element.name.en ?
element.name.fr ?
element.name.de ?
<button type="submit">Save element</button>
</form>
die ID-Einstellung funktioniert, aber ich das name
Feld nicht zugreifen können (es ist ein Objekt)
Ich habe versucht, mit th:field="*{name}"
und mit th:field="*{name.en}"
, aber es funktioniert nicht auf diese Weise.
Haben Sie model.addAttribute ("Element", neues Element()) in @GetMapping Verfahren haben ? –
Ich habe jetzt die Frage mit @GetMapping-Controller aktualisiert. Muss ich da etwas setzen? – Cristian
als @GurkanYesilyurt sagte, Sie müssen das neue Element-Objekt auf Ihre Karte setzen – cralfaro