Ich habe eine Thymelef-Vorlage in einem einfachen Spring-Boot-Anwendung. Die Vorlage enthält eine Liste in einer Tabelle wie folgt:Kann ich HTTP-POST-Anfrage von Thymeleaf Tabelle in Spring Boot-Anwendung
<p>There are <span th:text="${#lists.size(persons)}"></span> people:</p>
<table th:if="${not #lists.isEmpty(persons)}" border="1">
<tr>
<th>ID</th>
<th>Name</th>
<th>Address</th>
<th>Telephone</th>
<th>Email</th>
<th>Actions</th>
</tr>
<tr th:each="person : ${persons}">
<td th:text="${person.personId}"></td>
<td th:text="${person.name}"></td>
<td th:text="${person.address}"></td>
<td th:text="${person.telephone}"></td>
<td th:text="${person.email}"></td>
<td><a href="#" data-th-href="@{/edit(personId=${person.personId})}">Edit</a> |
<a href="#" data-th-href="@{/delete(personId=${person.personId})}">Delete</a></td>
</tr>
</table>
ich bearbeiten aktivieren möchten, und löschen Funktionalität gemäß der letzten Zelle in der Tabelle. Aber im Moment sind beide Anfragen für HTTP GET. Dies ist für die Bearbeitung geeignet, bei der die Details einer Person vom Server zur Bearbeitung abgerufen werden. Aufgrund der Datenänderungen auf dem Server sollte jedoch eine POST-Anforderung ausgelöst werden.
Weiß jemand, ob Thymeleaf eine POST-Anfrage pro Zeile einer Tabelle zulässt? Oder muss ich ein einfaches HTML-Formular pro Zeile schreiben?
Die GET Form ist zur Zeit:
<td><a href="#" data-th-href="@{/edit(personId=${person.personId})}">Edit</a>
<!--a href="#" data-th-href="@{/delete(personId=${person.personId})}">Delete</a></td-->
<form method="get" th:action="@{/edit(personId=${person.personId})}">
<button type="submit" name="submit" value="value">Edit</button>
</form>
</td>
Wo ich einen Link und ein Formular zum Testen haben.
Die Controller-Methode aufgerufen werden soll:
// Gets a Person.
@RequestMapping(value="/edit", method=RequestMethod.GET)
public String getEditPerson(@RequestParam("personId") String personId,
Model model) {
logger.info(PersonController.class.getName() + ".getEditPerson() method called.");
Person person = personDAO.get(Integer.parseInt(personId));
model.addAttribute("person", person);
// Set view.
return "/edit";
}
Der Fehler, wenn die Schaltfläche Version von GET genannt wird, ist:
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Sun Jul 24 00:26:16 BST 2016
There was an unexpected error (type=Bad Request, status=400).
Required String parameter 'personId' is not present`
I GET bin mit der Bearbeitung auslösen, da keine Daten gesendet zum Server hier außer der personId. Es wird keine Datenbankaktion ausgeführt, daher sollte es ein GET sein.
Es ist merkwürdig, dass die POST für Delete Werke bilden aber die GET eine für Bearbeiten nicht . –
können Sie bitte den Fehler teilen, den Sie bekommen? –
auch, warum Sie nicht POST auf der Bearbeitung auch verwenden? –