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

What will be my arguments to the userDetails method? And how do I differentiate /userDetails and /userDetails/edit/9 within the method?

1
  • Duplicate of this question Commented Apr 9, 2012 at 11:39

1 Answer 1

16

Ideally we can get pathvariable by using annotation @PathVariable in method argument but here you have used array of url {"/userDetails", "/userDetails/edit/{id}"} so this will give error while supply request like localhost:8080/domain_name/userDetails , in this case no id will be supplied to @PathVariable.

So you can get the difference (which request is comming through) by using argument HttpServletRequest request in method and use this request object as below -

String uri = request.getRequestURI();

Code is like this -

   @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
 }
Sign up to request clarification or add additional context in comments.

2 Comments

I use method=RequestMethod.GET and method=RequestMethod.POST separately. In that case, I won't be passing HttpServletRequest as an argument. Is there any other way around?
why don't you separate these two requestmapping into two methods? and if you have any common functionality to implement you can put that common code in separate private method and call this method accordingly.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.