Ich habe eine REST-Komponente im Frühjahr. Vereinfacht sieht es so aus:Codierte Komma in URL wird als Liste im Frühjahr gelesen
@RequestMapping(value = "/route", method = RequestMethod.GET)
public Object thisIsTheMethod(RequestParam(value = "value", required = false) List<String> values) {
return OtherClass.doTheThing(values);
}
Dies wird verwendet, um eine Liste von Strings beliebiger Länge zu konsumieren. Man könnte es eine Reihe von Möglichkeiten zur Verfügung:
localhost:8080/route?value=this&value=that
ODER
localhost:8080/route?value=this,that
Lassen Sie uns jetzt sagen, dass ich in einen String übergeben wollen, die ein Komma enthält: value,1
. Wie würde ich das machen? Das Ersetzen des Kommas durch% 2C führt zu einer Liste von 2 Werten ("Wert", "1"). Wenn Sie etwas in Anführungszeichen setzen oder in Anführungszeichen setzen, treten ähnliche Probleme auf. Es sieht so aus, als ob es funktioniert, wenn ich mehrere Parameter habe und das Muster mit mehreren Werten verwende, aber nicht, wenn ich das durch Komma getrennte Muster verwende.
nicht versucht, aber ich denke, sollte die folgende arbeiten. Definieren Sie ein Domänenobjekt, das Ihre Anforderungsobjekte modelliert (Wert in diesem Fall). Erstellen Sie eine Liste dieser Objekte als JSON, Base64 kodieren Sie sie und senden Sie die GET-Anfrage. Ändern Sie auf der Spring-Seite den Class-Typ des Request Param als eine Liste Ihrer Domain-Objekte. – Andonaeus
@Andonaeus: So liegt der Wahnsinn. Das heißt, ich habe darüber nachgedacht, seit ich diesen speziellen Abschnitt dieses Projekts begonnen habe. – DrGodCarl
Sehr ähnlich, aber auch ungelöst: http://stackoverflow.com/q/33484711/2954288 – Harald