Gibt es eine Möglichkeit, auszudrücken, dass meine Spring Web MVC-Controller-Methode entweder durch eine Anforderung eine ID als Teil des URI-Pfads einreichen ...Spring Web MVC: Verwenden Sie dieselbe Anforderungszuordnung für Anforderungsparameter und Pfadvariable
@RequestMapping(method=RequestMethod.GET, value="campaigns/{id}")
public String getCampaignDetails(Model model, @PathVariable("id") Long id) {
... oder wenn der Kunde sendet in der ID als HTTP-Request-Parameter im Stil ...
@RequestMapping(method=RequestMethod.GET, value="campaigns")
public String getCampaignDetails(Model model, @RequestParam("id") Long id) {
Dies wo ein recht häufig URL-Schema der realen Welt zu mir scheint, ich Ich möchte keinen doppelten Code hinzufügen, aber ich konnte noch keine Antwort finden. Jeder Ratschlag ist sehr willkommen.
EDIT: Es stellt sich heraus, dass es derzeit scheint (mit Spring MVC < = 3,0) keine Möglichkeit, dies zu erreichen, siehe die Diskussion innerhalb Javi Antwort.
Leider funktioniert dies nicht, da die Pfadvariable nicht aufgelöst werden kann. Ich habe auch eine Variante versucht, indem ich zu den Methodenparametern (@PathVariable ("id") Long id2) hinzugefügt habe, aber dann kann man eine Pfadvariable nicht optional machen, daher funktioniert diese vorgeschlagene Lösung nicht. Weitere Empfehlungen? – ngeek
@geek Ich habe nicht bemerkt, dass @PathVariable nicht auf null gesetzt werden konnte, danke. Ich habe auch vergessen, @PathVariable zu schreiben, also habe ich meine Antwort bearbeitet, um sie hinzuzufügen, und ich denke, Sie können nicht vermeiden, 2 Methoden zu haben, die ich denke :(. – Javi
Danke, dass Sie zu Ihrem Vorschlag Javi zurückkommen die gleiche interne Methode zu vermeiden, Code zu duplizieren.Ich denke immer noch, dass Spring MVC-Annotationen eine Möglichkeit bieten sollten, mehrere URL-Definitionen derselben Methode durch intrinsische Mittel zuzuordnen, wie Router in Rails oder Grails bereits erlauben. Vielen Dank für Ihre Hilfe – ngeek