@RequestMapping的params參數還是挺好用的。
我的需求是這樣的,現在有兩個列表頁面,一個是全部用戶的列表頁面,一個是某一個用戶的列表頁面,但是他們的jsp頁面是一樣的,url路徑我也想一樣的,單一用戶的列表頁面我想通過傳入用戶名來區別。
但是springmvc不能多個方法匹配一個url。
@RequestMapping的params參數就很好的就解決了這個問題。
同一個url,只要params不同,sringmvc是會區分匹配的。
示例我的項目中的一段代碼:
Java代碼
@RequestMapping(value = "/list",method=RequestMethod.GET)
public String getAll(Model model) {
Set<GroupSecure> secures= redisDao.get();
model.addAttribute("secures", secures);
return "group/list";
}
@RequestMapping(value = "/list",method=RequestMethod.GET,params="method=one")
public String getOneUser(@RequestParam(value ="name") String name,Model model) {
Set<GroupSecure> secures=redisDao.getByName(name);
model.addAttribute("secures", secures);
return "group/list";
}
--------------------------------------------------------------
@RequestParam(value ="name") 加個required=false,這兩個就可以合並到一起了
你想合並到一起,其實可以參考我的
[url]https://github.com/zhangkaitao/es/blob/master/web/src/main/java/com/sishuok/es/sys/user/web/controller/UserController.java[/url]
如,使用一個查詢對象封裝所有數據
@RequestMapping(value = {""}, method = RequestMethod.GET)
@PageableDefaults(sort = "id=desc")
@SearchableDefaults(value = "deleted_eq=0")
public String listAll(Searchable searchable, Model model) {
return list(null, null, searchable, model);
}
不過如rest風格的帶Path variable的不好辦。。 只能寫多個方法