简单介绍SpringMVC重定向传参数的实现

spring MVC框架controller间跳转,需重定向。有几种情况:不带参数跳转,带参数拼接url形式跳转,带参数不拼接参数跳转,页面也能显示。

一、不带参数跳转的

方式一:使用ModelAndView

return new ModelAndView("redirect:/allUserName")
这样就可以重定向到allUserName这个方法中

方式二:返回String

return "/allUserName";
二、带参数不拼接参数跳转

我喜欢用这种方式,但是网上搜索了很多例子,写的都不详细,实现不了功能,多亏了Joepis的博客:http://www.jb51.net/article/103727.htm 

Spring 3.1 提供了一个很好用的类:RedirectAttributes。 使用这个类,我们可以把参数随着重定向传到页面,不需自己拼url了,spring为我们准备了新方法,addFlashAttribute()。这个方法原理是放到session中,session在跳到页面后马上移除对象。所以你刷新一下后这个参数值就会丢失。

代码如下:

@RequestMapping("/addUser")
	public String addUser(User user,HttpServletRequest request,RedirectAttributes attr){
userService.save(user);
String userName = user.getUserName();
attr.addFlashAttribute("userName",userName);
return "redirect:/user/getAllUser";
}
	@RequestMapping("/getAllUser")
	public String getAllUser(@ModelAttribute("userName")String userName,HttpServletRequest request){
		//String userName = (String) request.getAttribute("userName");
		List<User> findAll = userService.findAll(userName);
		
		request.setAttribute("userList", findAll);
		return "/allUser";
	}
当时我做的时候,遇到的问题是不管怎么跳转,参数总是为null,后来才知道 需要使用@ModelAttribute注解,获取之前addFlashAttribute添加的数据,这样userName就有值

三、拼接参数

  方式一:自己手动拼接url
                    new ModelAndView("redirect:/toList?param1="+value1+"&param2="+value2);
                    这样有个弊端,就是传中文可能会有乱码问题。
        方式二:用RedirectAttributes,这个是发现的一个比较好用的一个类
                    这里用它的addAttribute方法,这个实际上重定向过去以后你看url,是它自动给你拼了你的url。
                    使用方法:
                     attr.addAttribute("param", value);
                    return "redirect:/namespace/toController";
                    这样在toController这个方法中就可以通过获得参数的方式获得这个参数,再传递到页面。过去的url还是和方式一一样的。

参考文章: http://www.jb51.net/article/103727.htm









  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值