Ordered RequestMapping im Frühjahr MVC

8

Ich arbeite an einem Spring-MVC-Projekt mit dem Annotated Controller. Eine Sache, die mich interessiert, ist die Reihenfolge, in der @RequestMapping Anweisung verarbeitet werden soll. Zum Beispiel möchte ich alle /green/basic/welcome auf GreenController.welcome() mappen aber green/{treeId}/{treeName} , das auf GreenController.viewTree(treeId, treeName) abgebildet werden soll.

Ich schätze, ich muss zwei @RequestMapping mit @RequestMapping von /green/basic/welcome angeben, die zuerst verarbeitet werden, so dass es kein Interpreter als Aufruf von GreenControllerviewTree("basic", "welcome") ist.

Können Sie mir das zeigen?

    
Phương Nguyễn 24.02.2010, 14:57
quelle

1 Antwort

7

Eine genaue Übereinstimmung für RequestMapping hat Vorrang vor einer mit PathVariable . Sie hätten also zwei Anforderungszuordnungen, auf die Sie hingewiesen hätten. Eine für die spezifische URL und die Variable Version für alles andere. Spring prüft auf direkte Pfadübereinstimmungen, bevor es nach Pfadvariablenübereinstimmungen sucht. Eine Reihenfolge spielt also keine Rolle, es sei denn, Sie haben zwei Anforderungszuordnungen mit der gleichen Anzahl von Pfadvariablen, die IllegalStateException

ausgeben können

Überprüfen Sie die Quelle von org.springframework.web.servlet.handler.AbstractHandlerMethodMapping für die Besonderheiten. Es wird in lookupHandlerMethod() behandelt.

Um die beste Übereinstimmung von zwei RequestMapping s zu ermitteln, die keine genauen Übereinstimmungen sind, ist die compareTo () Methode von RequestMappingInfo wird verwendet.

    
yincrash 27.02.2012 22:10
quelle

Tags und Links