문제

예를 들어 URL이 있습니다

foo.com/bar/99

99는 인수로서 컨트롤러의 메소드에 직접 사용할 수 있습니다. 컨트롤러가 /바에 매핑됩니다

ASP.NET MVC 또는 DJANGO에 익숙한 사람이라면 이는 전자의 lour.maproute와 유사하며 후자의 urlpatterns에서 (? p d+)를 사용합니다.

이를 얻기 위해 HTTP 요청 객체에서 데이터를 직접 처리 할 수는 있지만 Spring MVC가이를 지원하는지 여부를 알고 싶습니다 (특히 버전 2.5).

도움이 되었습니까?

해결책

아니요, 스프링은 이것을 상자에서 지원하지 않습니다. 그러나 메소드에 대한 경로를 맵핑 할 수 있습니다 이름 사용 @requestmapping 적절하게 구성되었습니다 InternalPathMethodNameResolver:

@Controller
@RequestMapping("/bar/*")
public class MyController {
  ...
  public String do99(HttpServletRequest request) {
    ...
  }
}

지정해야합니다 prefix ~을 위한 InternalPathMethodNameResolver 메소드 이름은 숫자로 시작할 수 없기 때문에 위의 작업을 위해 "do"로서. "foo.com/bar/baz"를 URL로 사용하고 메소드를 호출하는 경우 baz, 추가 구성이 필요하지 않습니다.

메소드 이름 매핑을 사용하지 않으려면 매개 변수로 '99'를 얻는 것이 쉽게 가져 오는 것만 큼 쉽습니다. request.getPathInfo() 당신의 방법에서.

다른 팁

Spring 3을 사용하는 사람이라면 누구나 새로운 @PathVairable 주석을 사용하여 수행 할 수 있습니다.

다음은 예입니다 http://blog.springsource.com/2009/03/08/rest-in-spring-3-mvc/

@RequestMapping("/hotels/{hotelId}")
public String getHotel(@PathVariable String hotelId, Model model) {
    List<Hotel> hotels = hotelService.getHotels();
    model.addAttribute("hotels", hotels);
    return "hotels";
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top