質問

たとえば、URL を使用すると、

foo.com/bar/99

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

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

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

役に立ちましたか?

解決

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

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

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

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

他のヒント

は、春の3を使用して誰のために、私はこれは新しい@PathVairable注釈を使用して行うことができます学んできた。

//ブログ:

ここでのhttpからの例です.springsource.com / 2009/03/08 /休憩・イン・春-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