2012-07-19 15 views
6

Estoy convirtiendo una aplicación de servlet heredada en Spring 3.1. En el proceso, algunas URL ahora están obsoletas. Hemos tenido algunos problemas con nuestra red que no se resolverán pronto. Mi jefe no quiere confiar en que sus redireccionamientos siempre estarán operativos. Entonces, ella me pidió que pusiera mis propios redireccionamientos en la aplicación web.Spring-MVC 3.1: ¿Cómo correlacionar las URL con una barra diagonal?

Todo funciona a la perfección, excepto que si una URL tiene una barra inclinada posterior, Spring 3.1 no encontrará la función de clase de controlador que la maneja.

http://blah.blah.blah/acme/makedonation consigue encontrar, mapeado y manipulados

http://blah.blah.blah/acme/makedonation/no

Aquí está la clase del controlador que estoy usando para manejar mis URL heredadas

import org.springframework.stereotype.Controller; 
import org.springframework.validation.*; 
import org.springframework.ui.ModelMap; 
import org.springframework.web.servlet.ModelAndView; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import org.springframework.web.bind.annotation.SessionAttributes; 


import org.apache.log4j.Logger; 

@Controller 
public class LegacyServletController { 

    private static final Logger logger = Logger.getLogger(LegacyServletController.class); 

    // Redirect these legacy screns "home", the login screen via the logout process 
    @RequestMapping({"makeadonation","contact","complain"}) 
    public String home() { 
     logger.debug("started..."); 
     return "redirect:logout"; 

    }// end home() 

}// end class LegacyServletController 

busqué en Google y encontré este Stack Overflow post que ofrece varias sugerencias, pero soy nuevo en Spring y no entiendo lo suficiente como para implementar algunas de esas sugerencias. ns. Este en particular suena como sería buen ajuste con mis necesidades:

primavera 3,1 RequestMappingHandlerMapping le permite establecer una propiedad "useTrailingSlashMatch". Por defecto es verdad. Creo cambiar a false resolvería el problema,

¿Podría alguien darme un ejemplo básico de cómo eso, me cita una dirección URL que tiene un ejemplo (que no tenía suerte con Google) o yo señalo a una mejor idea?

Gracias mucho por adelantado Steve

+0

I' vi esa solución '@RequestMapping (value = {"/search/","/search "}, method = RequestMethod.GET)' – basil

Respuesta

6

debe configurar el frijol en context.xml, y la propiedad establecido. o puede referirse a link o sección doc primavera 16.4

ejemplo de configuración

<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"> 
    <property name="useTrailingSlashMatch" value="true"> 
    </property> 
</bean> 
+0

¿Te refieres a mi * -servlet.xml o mi web.xml? – Steve

+0

quise decir * -servlet.xml –

2

Si está utilizando Java @Configuration de primavera también puede simplemente declarar una @Bean así:

@Bean 
public RequestMappingHandlerMapping useTrailingSlash() { 
    return new RequestMappingHandlerMapping() {{ setUseTrailingSlashMatch(true); }}; 
} 
+0

Eso no funcionará si tiene . Así es como lo arreglas: http://stackoverflow.com/questions/15912329/exact-requestmapping-with-spring –

Cuestiones relacionadas