Jax-rs automatische decodieren pathparam

Ich habe eine jax-rs-service empfängt eine Reihe von Parametern, die in den Weg, pathparameters. Diese Parameter können strings sein, die Werte enthalten, nicht geeignet für urls, so dass Sie urlencoded auf der client-Seite mit dem java.net.UrlEncoder etwa so:

String param = URLEncoder.encode(o.toString(), "UTF-8");

Diese wird genutzt, um die url supplier/group/param1/param2/param3. Wenn man diese geändert werden aufgrund der urlencoding, zum Beispiel, wenn es ist nur ein Raum, die Zeichenfolge empfangen, die in dem service eine + Zeichen.

@GET
@Path("{supplierId}/{groupCode}/{groupId}")
@Produces({MediaType.APPLICATION_XML, MediaType.TEXT_XML})
public SupplierGroup getSupplierGroup(@PathParam("supplierId") BigDecimal supplierId,
        @PathParam("groupCode") String groupCode,
        @PathParam("groupId") BigDecimal groupId) {
    //now groupCode is "+", not " "
}

Ich würde erwarten, dass jaxrs automatisch Dekodieren von codierten Pfad params.

BEARBEITEN:
Testen ein bisschen mehr entdeckte ich, dass beim senden mit %20 für den Raum, es ist in der Lage zu entschlüsseln die param.

  • Mit URI.toAsciiString funktioniert nicht immer. Die Antwort von @yegor256 ist robuster, fügen Sie die @Encoded Anmerkung über die Funktion decaration
InformationsquelleAutor Runar Halse | 2012-11-29
Schreibe einen Kommentar