[FIXED] Spring set default PathVariable

Ausgabe

Ich möchte meine Parameter im folgenden Format an meinen Webdienst übergeben:

http://…/greetings/neil/1

Statt

http://…/greetings?name=neil&id=1

Also habe ich meinen Code geändert von (beachten Sie, dass ich nur den ersten Parameter in den Code aufgenommen habe):

@RequestMapping("/greeting")
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name) {
    return new Greeting(counter.incrementAndGet(),
                        String.format(template, name));
}

zu:

@RequestMapping
public Greeting greeting(@PathVariable String name) {
    return new Greeting(counter.incrementAndGet(),
                        String.format(template, name));
}

was funktioniert, aber ich weiß nicht, wie man @PathVariable Standardwerte hinzufügt, so dass zum Beispiel:

http://…/Grüße/

http://…/greetings/neil/

würde wie mit Abfrageparametern funktionieren.

Wie mache ich das? Ich dachte, es würde vielleicht null übergeben, aber es erzeugt nur einen Seitenfehler.

Ich denke, die Antwort könnte darin bestehen, mehrere Überladungen hinzuzufügen, aber das klingt ein bisschen chaotisch.

Danke.

Danke.

Lösung

Wie wäre es mit folgendem Weg? Ich verwende die Klasse java.util.Optional, die als Wrapper für Objekte fungiert, die null oder nicht null sein können.

@RequestMapping
public Greeting greeting(@PathVariable Optional<String> name) {
    String newName = "";  
    if (name.isPresent()) {
        newName = name.get()   //returns the id
    }
    return new Greeting(counter.incrementAndGet(),
                        String.format(template, newName));
}

Alternativ können Sie zwei separate Request-Mapping-Handler definieren:

@RequestMapping("/greeting")
public Greeting defaultGreeting()

UND

@RequestMapping("/greeting/{name}")
public Greeting withNameGreeting(@PathVariable String name)


Beantwortet von –
VHS


Antwort geprüft von –
Katrina (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like