spring mvc 重定向传参

时间:2023-03-08 19:43:23

参考链接如下:

http://bbs.****.net/topics/391034118?page=1

自己的示例程序:

详细页面提交一个修改动作,修改完成后跳转到检索页面,把检索条件重新赋值给检索页面。

本地页面

    <input type="hidden" name="startDate" value="${(requestDto.startDate)!""}">
<input type="hidden" name="endDate" value="${(requestDto.endDate)!""}">

本地controller

private static final String SEARCH_PAGE = "redirect:/list/search.do";
@RequestMapping(value = "/update", method=RequestMethod.POST)
public String update(RequestDto requestDto,ModelMap modelMap,RedirectAttributes attr) {
/*这段代码就不贴出来了*/
setRedirectParam(requestDto, attr);
return SEARCH_PAGE;
} private void setRedirectParam(RequestDto requestDto,RedirectAttributes attr){
attr.addAttribute("startDate", requestDto.getStartDate());
attr.addAttribute("endDate", requestDto.getEndDate());
}

检索页面

    <input type="text" name="startDate" value="${(requestDto.startDate)!""}">
<input type="text" name="endDate" value="${(requestDto.endDate)!""}">

检索controller

 @RequestMapping("/search")
public String search(RequestDto requestDto,DalPage pagination,ModelMap modelMap) { }

据参考的帖子,参数传递除了attr.addAttribute();

还有一种方式:attr.addFlashAttribute();使用这个的时候一般用来传递处理结果。

本地页面同上

本地controller

private static final String SEARCH_PAGE = "redirect:/list/search.do";
@RequestMapping(value = "/update", method=RequestMethod.POST)
public String update(RequestDto requestDto,ModelMap modelMap,RedirectAttributes attr) {
/*这段代码就不贴出来了*/
setRedirectParam(requestDto, attr);
return SEARCH_PAGE;
} private void setRedirectParam(RequestDto requestDto,RedirectAttributes attr){
attr.addFlashAttribute("successCode", requestDto.getStartDate());
}

检索页面

<script type="text/javascript">
window.onload=function(){
if(""!="${(successCode)!""}"){
alert("${(successCode)!""}");
}
}
</script>

检索controller可以不用接参数。且可以通过如下形式查看

@RequestMapping("/search")
public String search(HttpServletRequest httpRequest) {
Map<String, ?> map=RequestContextUtils.getInputFlashMap(httpRequest);
}

map里面存放的就是闪存的值。

然后就是混合使用

attr.addAttribute("startDate", requestDto.getStartDate());
attr.addAttribute("endDate", requestDto.getEndDate());
attr.addFlashAttribute("successCode", "3001");

这样做的话,页面那边是取不到闪存的值得,只能取到get提交参数。