spring mvc 重定向传参

参考链接如下:

http://bbs.csdn.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

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

据参考的帖子,参数传递除了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提交参数。

posted on 2015-06-02 17:55  扭头撞到墙  阅读(280)  评论(0编辑  收藏  举报