通常我们有这样的需求,当我们编辑了一个页面后,希望返回到编辑的上一个操作。
或者说删除一个东西,然后返回到删除的上一个操作(如查询)。
/**
* 获得发出该请求的url路径,用于完成该请求后回到此地址
*/
protected String getReferer(HttpServletRequest request) {
String result = request.getHeader("Referer");
Matcher matcher = Pattern.compile("http://([^/]+)([\\S]*)").matcher(result);
if (matcher.find()) {
result = matcher.group(2);
result = result.substring(request.getContextPath().length());
}
return result;
}
使用范例:
@RequestMapping(value = "/{id}", method = RequestMethod.PUT)
public String update(@PathVariable long id, String refer) {
//
//
return REDIRECT+refer;
}
@RequestMapping(value = "/{id}/edit", method = RequestMethod.GET)
public String edit(@PathVariable long id, Model model, HttpServletRequest request) {
model.addAttribute("refer",getReferer(request));
return "/xx/edit";
}
传refer到页面上,页面上将refer返回回来