Próbuję usunąć obiekt na stronie za pomocą przycisku usuwania linku (a href) lub przycisku usuwania (formularz). Używam przycisk usunąć ponieważ związek wzywa do „GET” zamiast „post”programowanie Sterownik Spring MVC i jsp dla HttpDelete
Jest to kod JSP, który zamierza robić, że:
<td><form:form method="DELETE" action="/client/invoices/${invoice.id}"><input type="submit" value="delete"></form:form></td>
Powstały html to:
<td><form id="command" action="/client/invoices/9" method="post"><input type="hidden" name="_method" value="DELETE"/><input type="submit" value="delete"></form></td>
Jestem bardzo szczęśliwy. Ma metodę, która wskazuje, że jest to działanie DELETE. Oto mój kod kontrolera:
@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";
}
Więc, co się dzieje, jest to, że metoda ta nie jest tzw. Mam inną metodę, w której POST tworzy fakturę, a kliknięcie przycisku usuwania powoduje utworzenie faktury. Domyślam się, że kontroler przegląda serwlet jako żądanie POST i używa pierwszej metody, która obsługuje żądanie POST, które w tym przypadku tworzy nową fakturę.
Próbuję zrobić to "RESTful", więc chcę, aby to było /invoice/id
i używanie POST, PUT, DELETE, GET
, ale nie jestem pewien, jak to zakodować w kontrolerze za pomocą Spring MVC.
jestem w stanie uzyskać to do pracy poprzez dołączenie „czasowniki”, takie jak /invoices/id/delete
i konfigurowania kontrolera jako
@RequestMapping(value = "/{id}/delete", method = RequestMethod.POST)
pamiętać, że RequestMethod.POST ale od wartości map wyraźnie mają /id/delete
, robi nie używaj domyślnego testu POST mapowanego na /invoices
i /invoices/id
.
Mam nadzieję, że jestem jasny. Jeśli ktoś ma jakieś sugestie lub przykładowy kod (zdecydowanie preferowany), byłbym wdzięczny. Czytałem te tak linki o referencje: Link1 Link2 Link3
Am stoi ten sam problem. Dodałem też filtr.Ale parapet metody delete został przekonwertowany na POST. Czy możesz pomóc – shalu