2016-11-01 2 views
0

Ich frage mich, ob es eine Möglichkeit für eine Methode gibt, verschiedene Dinge basierend auf was param angefordert wurde zurückzugeben. Ein Beispiel:Verschiedene Dinge zurückgegeben basierend auf einem angeforderten Parameter mit Spring?

@RestController 
public class GreetingController { 

private static final String templateForName = "Hello, %s!"; 
private static final String templateForTest = "Testing new output, which is %s!"; 

@RequestMapping("/greeting") 
public Greeting greeting(@RequestParam(value="name", defaultValue="World") String name 
         ,@RequestParam(value="test", defaultValue="TEST value") String test 
         ) { 
       //An if here that would decide which param was requested? 
       return new Greeting(String.format(templateForName, name)); 

} 

Hier würde zum Beispiel "Hallo, Benutzer!" wenn angefordert mit ?name=User Ist es möglich "Test neue Ausgabe, was ist Test!" anzuzeigen? wird mit ?test=test

Ich fange gerade an, irgendetwas mit Frühling zu tun, also, wenn etwas unklar ist oder die bereitgestellten Informationen nicht ausreichend sind, lassen Sie mich wissen, und ich werde versuchen, besser zu erklären.

+0

Warum nicht einfach die Parameter Teil eines PATH-Parameters machen, wenn sie immer ein unterschiedliches, wohldefiniertes Verhalten haben? – Andonaeus

+0

Ich bin mir nicht sicher, ob ich verstehe, was du meinst, könntest du bitte ein Beispiel geben? – ForInfinity

+0

Sicher werde ich eine Antwort mit einem Beispiel hinzufügen, wenn ich heute etwas Zeit habe – Andonaeus

Antwort

0

Sie können einfach die if else conditions fügen Sie die richtige Begrüßung Objekt zurück, wie unten:

@RequestMapping("/greeting") 
    public String greeting(@RequestParam(value="name", defaultValue="World") String name 
          ,@RequestParam(value="test", defaultValue="TEST value") String test 
          ) { 
     Greeting greeting = null; 
     if(name.equals("User")) { 
      greeting = new Greeting(String.format(templateForName, name)); 
     } else if(test.equals("test")) { 
       greeting = new Greeting(String.format(templateForTest, test)); 
     } 
     return greeting; 
    } 
+0

Danke! Und wisst ihr vielleicht, ob es möglich ist, zwei verschiedene "@ RequestMapping" zu verwenden, die die gleiche Methode der 'öffentlichen ReturnType-Begrüßung 'verwenden? Oder vielleicht Auswahl aus 'Map <>', wenn es möglich ist? – ForInfinity

0

Per mein Kommentar, PATH params mit:

@RequestMapping("/greeting/name/{name}") 
public Greeting nameGreeting(@PathParam(value="name", defaultValue="World") String name) { 

    return new Greeting(String.format(templateForName, name)); 

} 

@RequestMapping("/greeting/test/{test}") 
public Greeting testGreeting(@PathParam(value="test", defaultValue="TEST value") String name) { 

    return new Greeting(String.format(templateForTest, test)); 

} 
0

Nur ein @RequestParam und Test für die Verwendung Wert, nach dem Sie suchen.

Verwandte Themen