web-dev-qa-db-ja.com

pathvariableを使用した複数の値を使用したRequestMapping-Spring3.0

@RequestMapping(value = {"/userDetails", "/userDetails/edit/{id}"}, method = RequestMethod.GET)
public String userDetails(Map Model,****) {
//what goes here? 
}

userDetailsメソッドに対する私の引数は何ですか?また、メソッド内で/userDetails/userDetails/edit/9を区別するにはどうすればよいですか?

11
Aravind Vel

理想的には、メソッド引数でアノテーション@PathVariableを使用してパス変数を取得できますが、ここではurl {"/userDetails", "/userDetails/edit/{id}"}の配列を使用しているため、localhost:8080/domain_name/userDetailsのような供給要求中にエラーが発生します。この場合、IDはありません。 @PathVariableに提供されます。

したがって、メソッドで引数HttpServletRequestリクエストを使用し、このリクエストオブジェクトを次のように使用することで、違い(どのリクエストが通過するか)を取得できます-

文字列uri = request.getRequestURI();

コードはこんな感じ-

   @RequestMapping(value = {"/userDetails", "/userDetails/edit/{id}"}, method=RequestMethod.GET)
   public String userDetails(Map Model,HttpServletRequest request) {
   String uri = request.getRequestURI();  
  //put the condition based on uri
 }
17
kundan bora