2

たとえば、URL

foo.com/bar/99

99 は、コントローラのメソッドで引数として直接使用できます。コントローラーは /bar にマップされます

ASP.NET MVC または Django に精通している人にとって、これは前者の routes.MapRoute と後者の urlpatterns で (?P\d+) を使用することに似ています。

Http Request オブジェクトのデータを直接処理してこれを取得することは可能ですが、Spring MVC にこれに対するサポートが組み込まれているかどうか (特にバージョン 2.5) を知りたいです。

4

2 に答える 2

12

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";
}
于 2009-10-09T17:25:24.263 に答える
0

いいえ、Spring はそのままではこれをサポートしていません。ただし、 @RequestMappingを 使用してパスをメソッドにマップし、適切に構成することはできます。InternalPathMethodNameResolver

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

prefixメソッド名は数字で始めることはできないため、上記を機能させるにはforInternalPathMethodNameResolverを「do」として指定する必要があります。「foo.com/bar/baz」を URL として使用してメソッドを呼び出す場合baz、追加の構成は必要ありません。

メソッド名のマッピングを使用したくない場合は、'99' をパラメーターとして取得するのは、メソッドで取得するのと同じくらい簡単request.getPathInfo()です。

于 2009-10-07T23:33:55.250 に答える