Wenn jemand immer noch damit zu kämpfen hat, so sollte es gemacht werden:
Formulareingaben:
Controller Methode:
@RequestMapping
public String deletePlaces(@RequestParam("myParam") Long[] myParams) {
//myParams wird 3 Elemente mit den Werten 1,4 und 19 haben
}
Dies funktioniert genauso für String[]
Integer[]
Long[]
und wahrscheinlich mehr. POST
,GET
,DELETE
werden auf die gleiche Weise funktionieren.
Der Parametername muss mit dem name
-Tag der Formulareingabe übereinstimmen. Kein zusätzliches []
erforderlich usw. Tatsächlich kann der Parameternamen weggelassen werden, wenn der Methodenargumentname mit dem Eingabenamen übereinstimmt. So kann die Methodensignatur wie folgt aussehen:
@RequestMapping
public String deletePlaces(@RequestParam Long[] myParams)
und es wird trotzdem funktionieren
Etwas Extra: Nun, wenn Sie ein Domain-Modell haben, sagen wir Place
und Sie haben ein PlaceRepository
, indem Sie Place#id
als Wert für Ihre Eingaben angeben, kann Spring verwandte Objekte für uns nachschlagen. Also, wenn wir annehmen, dass die oben genannten Formulareingaben Benutzer-IDs als Werte enthalten, können wir dies einfach in den Controller schreiben:
public String deletePlaces(@RequestParam Place[] places) {
//places wird mit den entsprechenden Einträgen aus der Datenbank befüllt!
}
Süß, nicht wahr?