2011-08-02 10 views
7

I necesitan para mapear interceptor para todos los métodos en el controlador anotado con @RequestMapping (valor = "/ cliente")primavera: camino cartografía reglas

En mapeo tengo

<mvc:interceptor> 
    <mvc:mapping path="/app/client/*"/> 
    <bean class="com.cci.isa.web.CIPClientHandleInterceptor" /> 
</mvc:interceptor> 

Este interceptor llamado perfectamente para las direcciones URL como:
1. http://host/app/client/clientUpdateForm?clientId=305

Pero no pidió URLs como:
2. http://host/app/client/clientUpdateForm/clientId_305 (con barra inclinada después del nombre del método)

Cómo lograr que se llama de segunda variante?

Muchas gracias.

+0

Si está utilizando la anotación @RequestMapping entonces no puedo ver por qué también se está especificando un MVC: interceptor. Solo use ... – nickdos

Respuesta

1

creo que esto va a lograr lo que desea:

<mvc:mapping path="/app/client/**/*"/> 

El '/ **' indica cualquier número de directorios. Cuando esto se usa junto con '/ *', tiene algo que mira una profundidad de carpeta arbitraria, con un nombre de archivo arbitrario.

+0

No, el interceptor no llama.
me trataron uso próximos combinaciones de ruta:
/app/cliente/**/*
/app/cliente/**
/app/cliente/*/*
Nadie variantes de este no lo hace interceptor de llamada. – atovstonog

0

Pruebe la sugerencia anterior, pero cambiar la anotación a

@RequestMapping(value = "/client*") 

Aunque me gustaría utilizar dos métodos para cada uno de los dos patrones de URI y pasarlos a un método común para hacer las "cosas" ...

@RequestMapping(value = "/app/client/clientUpdateFormat/{clientId}", method = RequestMethod.GET) 
public String doItOne(@PathVariable("clientId") String clientId) { 
    doItCommon(clientId); 

y

@RequestMapping(value = "/app/client/clientUpdateFormat", method = RequestMethod.GET) 
public String doItTwo(@RequestParam("clientId") String clientId) { 
    doItCommon(clientId); 
5

esta pregunta es demasiado viejo, pero tal vez esto ayuda somebo dy.

usted debe tratar de eliminar /app, yo creo que no es necesario y tal vez esta es la causa del problema.

<mvc:mapping path="/client/**"/> 
1

Si su controlador con

@RequestMapping(value = "/client") 

Trate

<mvc:mapping path="/client**"/> 
0

Mi problema era que utilizamos RequestMappingHandlerMapping encargo

<bean name="handlerMapping" 
class="utils.web.versioning.MobileVersionRewritingMappingHandler"> 
    <property name="order" value="0"/> 
    <property name="interceptors"> 
     <list> 
      ... 
     </list> 
    </property> 
</bean> 

XML o código de configuración para CORS o cualquier otras propiedades MVC no no afecta las asignaciones de manejador personalizado. Podría especificar coros Config para asignación de controlador costumbre, pero yo prefiero para eliminar config legado y usar esto para configurar interceptores:

<mvc:interceptors> 
    ... 
</mvc:interceptors> 

Ahora Cors está trabajando y estoy usando la configuración global de coros XML.