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?
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
Ü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.
Tags und Links spring-mvc