2012-07-19 38 views
6

Tôi đang chuyển đổi ứng dụng servlet cũ sang Spring 3.1. Trong quá trình này, một số URL hiện đã lỗi thời. Chúng tôi đã gặp một số sự cố với mạng của chúng tôi và sẽ không sớm được giải quyết. Ông chủ của tôi không muốn tin rằng các chuyển hướng của họ sẽ luôn hoạt động. Vì vậy, cô ấy yêu cầu tôi chuyển hướng của riêng tôi vào webapp.Spring-MVC 3.1: Cách ánh xạ URL bằng dấu gạch chéo?

Tất cả các công trình đều tuyệt vời, ngoại trừ việc nếu URL có dấu gạch chéo cuối mùa xuân 3.1 sẽ không tìm thấy hàm Lớp điều khiển xử lý nó.

http://blah.blah.blah/acme/makedonation được tìm thấy, ánh xạ và xử lý

http://blah.blah.blah/acme/makedonation/không

Đây là lớp điều khiển Tôi đang sử dụng để xử lý URL di sản của tôi

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 

Tôi đã google xung quanh và tìm thấy Ngăn xếp ngăn xếp này post cung cấp một số đề xuất, nhưng tôi mới làm quen với Spring và không hiểu đủ về nó để thực hiện một số gợi ý ns. Đây là một trong những âm thanh đặc biệt như nó sẽ là tốt phù hợp với nhu cầu của tôi:

mùa xuân 3,1 RequestMappingHandlerMapping cho phép bạn thiết lập một "useTrailingSlashMatch" bất động sản. Theo mặc định nó là sự thật. Tôi nghĩ rằng việc chuyển đổi số này thành false sẽ giải quyết được vấn đề của bạn,

Có ai cho tôi ví dụ cơ bản về cách đó không, hãy báo cho tôi URL có ví dụ như vậy (Tôi không may mắn với Google) hoặc chỉ cho tôi một ý tưởng tốt hơn?

Cảm ơn nhiều trước Steve

+0

tôi đã thấy giải pháp như vậy '@RequestMapping (value = {"/search/","/search "}, method = RequestMethod.GET)' – basil

Trả lời

6

bạn nên cấu hình đậu của bạn trong context.xml, và thiết lập tài sản. hoặc bạn có thể tham khảo link hoặc phần doc mùa xuân 16.4

dụ cấu hình

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

Bạn có nghĩa là * -servlet.xml hoặc web.xml của tôi không? – Steve

+0

i có nghĩa là * -servlet.xml –

2

Nếu bạn đang sử dụng lò xo của Java @Configuration bạn cũng có thể chỉ cần khai báo một @Bean như thế này:

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

Điều đó sẽ không hoạt động nếu bạn có . Đây là cách bạn khắc phục: http://stackoverflow.com/questions/15912329/exact-requestmapping-with-spring –

Các vấn đề liên quan