Programmierung Spring MVC-controller und die jsp für HttpDelete

Ich versuche zum löschen einer Entität, die auf einer Seite über einen löschen-link (a href) - oder löschen-Schaltfläche (Formular). Ich bin mit button löschen, da ein link fordert einen "GET" statt "POST"

Dies ist die JSP-code, der vorhat, die:

<td><form:form method="DELETE" action="/client/invoices/${invoice.id}"><input type="submit" value="delete"></form:form></td>

Den resultierenden html-Code ist dieser:

<td><form id="command" action="/client/invoices/9" method="post"><input type="hidden" name="_method" value="DELETE"/><input type="submit" value="delete"></form></td>

So, ich bin ziemlich glücklich. Es hat _method was bedeutet, dass Sie eine LÖSCHEN-Aktion. Hier meine controller-code:

@RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
public String delete(@PathVariable("id") Long id, @RequestParam(value = "page", required = false) Integer page, @RequestParam(value = "size", required = false) Integer size, Model uiModel) {
        invoiceServiceHibernate.removeInvoice(id);
        return "redirect:/invoices";
}

Also, was passiert, ist, dass diese Methode nicht aufgerufen. Ich habe eine andere Methode, die nicht einen BEITRAG zu erstellen der Rechnung und klicken auf die Schaltfläche löschen erstellt eine Rechnung. Meine Vermutung ist, dass der controller schaut auf das servlet als POST-request und nutzt die erste Methode, die mit einer POST-Anforderung, die in diesem Fall erstellen Sie eine neue Rechnung.

Ich versuche zu machen, diese "Erholsamen" so ich will, dass dieses /invoice/id und mit POST, PUT, DELETE, GET aber ich bin nicht sicher, wie man code, der in den controller mit Spring MVC.

Ich bin in der Lage zu bekommen dies funktioniert durch anfügen von "Verben" wie /invoices/id/delete und einrichten des Controllers als

@RequestMapping(value = "/{id}/delete", method = RequestMethod.POST)

Beachten Sie, dass die RequestMethod.- POST, aber da die map-Werte explizit haben /id/delete es nicht die Standard-POST zugeordnet ist /invoices und /invoices/id.

Ich hoffe, ich bin klar. Wenn jemand irgendwelche Vorschläge haben, oder Beispielcode (stark bevorzugt), würde ich mich freuen. Ich habe gelesen, diese SO links für Verweise:
Link1
Link2
Link3

  • Bin mit dem gleichen problem. Ich hav fügte der filter zu.aber Schweller die delete-Methode haben umgewandelt zu POSTEN. Helfen u kann
InformationsquelleAutor okysabeni | 2011-10-26
Schreibe einen Kommentar