2010-02-24 14 views
8

Estoy trabajando en un proyecto Spring MVC utilizando el controlador anotado. Una cosa que me interesa es acerca de la orden que @RequestMapping instrucciones para procesar. Por ejemplo, quiero que todos los /green/basic/welcome se correlacionen con GreenController.welcome() pero se asigne green/{treeId}/{treeName} al GreenController.viewTree(treeId, treeName).Petición de solicitud solicitada en primavera MVC

supongo que necesito para especificar dos @RequestMapping con @RequestMapping de /green/basic/welcome para ser procesados ​​en primer lugar, de modo que no será intérprete como un llamado a GreenControllerviewTree("basic", "welcome").

¿Pueden guiarme en eso?

+0

¿Estás seguro de que no puedes cambiar la URL de/green/basic/welcome por algo que no entraría en conflicto con/green/{treeId}/{treeName}? –

+0

Lo sé, ese debería ser el camino. Solo tengo curiosidad sobre cómo '' RequestMapping's se procesan en orden. –

+0

Tengo curiosidad por esto también, y todavía no he encontrado una respuesta clara. ¿Alguien tiene una idea de esto? – InverseFalcon

Respuesta

7

Una coincidencia exacta para un RequestMapping tendrá prioridad sobre uno con un PathVariable. Entonces tendrías dos asignaciones de solicitudes como las que has señalado. Uno para manejar la URL específica, y la versión variable captará todo lo demás. cheques de primavera camino directo para partidos antes de buscar coincidencias variable de la ruta, por lo que el orden no importa a menos que tenga dos asignaciones de solicitud con el mismo número de variables de ruta, que puede escupir un IllegalStateException

Comprobar la source of org.springframework.web.servlet.handler.AbstractHandlerMethodMapping para los detalles. Se maneja en lookupHandlerMethod().

Para determinar la mejor coincidencia de dos RequestMapping s que no son coincidencias exactas, se utiliza el método compareTo() de RequestMappingInfo.

+1

Un práctico detalle de implementación para saber. ¿Existe alguna documentación pública (que no sea la fuente) que defina este comportamiento para la API? – digitaljoel

Cuestiones relacionadas