2012-07-19 12 views
6

Konwertuję starszą aplikację serwletu na wersję 3.1. W procesie niektóre adresy URL są już nieaktualne. Mieliśmy problemy z naszą siecią, które nie zostaną rozwiązane w najbliższym czasie. Mój szef nie chce ufać, że ich przekierowania zawsze będą działały. Poprosiła mnie o umieszczenie moich własnych przekierowań w webappie.Spring-MVC 3.1: Jak zmapować adresy URL za pomocą ukośnika?

Wszystko działa świetnie, z tym wyjątkiem, że jeśli URL ma końcowy ukośnik Spring 3.1 nie znajdzie funkcji klasy Controller, która go obsługuje.

http://blah.blah.blah/acme/makedonation zostanie znaleziony, odwzorowane i obsługiwane

http://blah.blah.blah/acme/makedonation/nie

Oto klasa kontrolera używam do obsługi moich starszych URL

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 

I Googled wokół i znalezione to przepełnienie stosu post, które oferuje kilka sugestii, ale jestem nowy w Spring i nie rozumiem go wystarczająco, aby wdrożyć niektóre z tych sugestii ns. Ten jeden w szczególności brzmi jak to będzie dobrze pasuje do moich potrzeb:

wiosna 3,1 RequestMappingHandlerMapping pozwala ustawić „useTrailingSlashMatch” własność . Domyślnie jest to prawda. Myślę przełączenie go na false rozwiąże problemu,

Czy ktoś mi dać podstawowy przykład, w jaki sposób, że zacytuję mi adres URL, który ma taki przykład (nie miałem szczęścia z Google) lub pkt mnie do lepszego pomysłu?

Dzięki dużo wcześniej Steve

+0

I Widziałem takie rozwiązanie '@RequestMapping (value = {"/search/","/search "}, method = RequestMethod.GET)' – basil

Odpowiedz

6

należy skonfigurować fasoli w context.xml i ustaw właściwość. czy można odwołać się do link lub wiosną sekcji doc 16.4

przykład konfiguracja

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

Masz na myśli mój * -servlet.xml lub mój web.xml? – Steve

+0

miałem na myśli * -servlet.xml –

2

Jeśli używasz sprężyna w Java @Configuration można też po prostu zadeklarować @Bean takiego:

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

To nie zadziała, jeśli masz . Oto, jak to naprawić: http://stackoverflow.com/questions/15912329/exact-requestmapping- with-spring –

Powiązane problemy