2012-04-09 61 views
8
@RequestMapping(value = {"/userDetails", "/userDetails/edit/{id}"}, method = RequestMethod.GET) 
public String userDetails(Map Model,****) { 
//what goes here? 
} 

什麼是我的參數userDetails方法?那麼如何區分/userDetails/userDetails/edit/9具有多個值和路徑變量的RequestMapping - Spring 3.0

+0

複製的[這個問題](http://stackoverflow.com/questions/2745471/spring-web-mvc-use-same-request-mapping-for-請求參數和路徑變量) – nobeh 2012-04-09 11:39:15

回答

15

理想的情況下,我們可以通過方法的參數使用註釋@PathVariable得到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 
} 
+0

我分別使用method = RequestMethod.GET和method = RequestMethod.POST。在這種情況下,我不會傳遞HttpServletRequest作爲參數。還有別的辦法嗎? – 2012-04-09 11:50:37

+6

你爲什麼不把這兩個requestmapping分成兩個方法?如果你有任何通用的功能來實現,你可以把這個通用代碼放在不同的私有方法中,並相應地調用這個方法。 – 2012-04-09 12:06:56

相關問題