2012-07-19 22 views
6

Eski bir sunucu uygulaması Spring 3.1'e dönüştürüyorum. Bu süreçte bazı URL'ler artık kullanılmamaktadır. Ağımızla yakın zamanda çözülmeyecek bazı sorunlar yaşadık. Patronum, yönlendirmelerinin her zaman operasyonel olacağına güvenmek istemiyor. Bu yüzden, kendi yönlendirmeleri web sunucusuna koymamı istedi.Spring-MVC 3.1: URL'leri sondaki eğik çizgi ile nasıl eşleştirilir?

Her şey harika, ancak eğer bir URL bir son çizgiye sahipse, Spring 3.1 onu işleyen Controller sınıfı işlevini bulamayacaktır.

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

İşte

benim eski URL'ler

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 
Etrafa google'dan

ve bulunan işlemek için kullanıyorum denetleyici sınıftır gelmez/eşleştirilmiş, bulundu ve

http://blah.blah.blah/acme/makedonationele alır Bu Stack Overflow post, birkaç öneri sunar, ancak Spring için yeni ve bu önerilerin bazılarını uygulamak için yeterince anlamadım. ns. 3.1 RequestMappingHandlerMapping bir "useTrailingSlashMatch" özelliğini ayarlamanızı sağlar

bahar: böyle tikelin bu biri benim ihtiyaçları ile iyi bir uyum olacak. Varsayılan olarak bu doğrudur. Ben yanlış onu geçiş sorunu, çözecek düşünüyorum

kimse bana o kadar bana böyle bir örnek olan bir URL alıntı nasıl temel bir örnek vermek istiyorum (Google'a hiçbir şans oldu) ya da bana gelin daha iyi bir fikre? peşin Steve

+0

Ben ve böyle bir çözümü gördüm @RequestMapping (value = {"/ search /", "/ search"}, method = RequestMethod.GET) ' – basil

cevap

6

çok

sayesinde size context.xml içinde fasulye, ve set özelliğini yapılandırmanız gerekir. Eğer bahar Java @Configuration kullanıyorsanız veya link veya bahar doc bölümüne başvurabilirsiniz 16.4

örnek yapılandırma

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

Benim * -servlet.xml mi yoksa web.xml mi? – Steve

+0

Kastettiğim * -servlet.xml –

2

da sadece böyle bir @Bean ilan edebilir:

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

varsa, bu işe yaramaz. Bunu nasıl düzeltirsiniz: http://stackoverflow.com/questions/15912329/exact-requestmapping-with-spring –

İlgili konular