2009-10-08 19 views
8

Spring MVCでは、すべてのリクエストを受信するコントローラが/my/app/path/controller/*にあります。URIのパスで変数を取得する

/my/app/path/controller/blah/blah/blah/1/2/3にリクエストがあったとします。

/blah/blah/blah/1/2/3の部分、つまりハンドラマッピング定義の*と一致する部分を取得するにはどうすればよいですか。

つまり、私はサーブレットではなくコントローラのためにpathInfoと同様のものを探しています。

答えて

8

春3では、@ PathVariableアノテーションを使用してURLの一部を取得できます。

ここで春2.5ではhttp://blog.springsource.com/2009/03/08/rest-in-spring-3-mvc/

@RequestMapping(value="/hotels/{hotel}/bookings/{booking}", method=RequestMethod.GET) 
public String getBooking(@PathVariable("hotel") long hotelId, @PathVariable("booking") long bookingId, Model model) { 
    Hotel hotel = hotelService.getHotel(hotelId); 
    Booking booking = hotel.getBooking(bookingId); 
    model.addAttribute("booking", booking); 
    return "booking"; 
} 
1

からの簡単な例では、引数としてのHttpServletRequestのインスタンスを取る任意のメソッドをオーバーライドすることができます。

org.springframework.web.servlet.mvc.AbstractController.handleRequest

春3、あなたは自動的に要求を結合するあなたのコントローラメソッドと春にHttpServletRequestの引数を追加することができます。例:

どちらの場合でも、このオブジェクトは、getPathInfoメソッドを含むサーブレットで使用するのと同じ要求オブジェクトです。

関連する問題