SpringMVC的RedirectAttributes传递参数值的方法以及EL表达式无法获取参数值的原因.md

本文介绍SpringMVC 3.1版本后新增的RedirectAttributes功能,详细讲解如何通过addAttribute和addFlashAttribute方法在重定向时携带参数,以及在JSP页面中通过EL表达式获取这些参数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SpringMVC中使用 RedirectAttributes 从一个controller重定向传值(参数)到另一个controller的方法:

介绍:RedirectAttributes是Spring mvc 3.1版本之后出来的一个功能,专门用于重定向之后还能带参数跳转的。

他有两种带参的方式:

​ 第一种:
​ attr.addAttribute(“param”, value);
​ 这种方式就相当于重定向之后,在url后面拼接参数,这样在重定向之后的页面或者控制器再去获取url后面的参数就可以了,但这个方式因为是在url后面添加参数的方式,所以暴露了参数,有风险。

attr.addAttribute("param1", "value1");  
return "redirect:/index";

​ 这样就相当于:return “redirect:/index?param1=value1”

​ 第二种:
​ attr.addFlashAttribute(“param”, value);
​ 这种方式也能达到重新向带参,而且能隐藏参数,其原理就是放到session中,session在跳到页面后马上移除对象,所以你刷新一下后这个值就会丢掉,这个方法适合用于防止刷新页面重复提交数据的问题。

具体使用方法:

controller:

@RequestMapping({"/","/index"})
	public String login() {
    	return "Login";
	}
@RequestMapping("info")
    public String info(HttpSession session, RedirectAttributes attributes) {
        if (session.getAttribute("UserSession") != null)
            return "infoShow";
        attributes.addFlashAttribute("info",
                "<script type='text/javascript'>alert('请登录账户!')</script>");
        return "redirect:index";
    }

jsp页面:

<div>${info}</div>

​ 这种方法传递的参数是可以被EL表达式获取的。

EL表达式无法获取传值的原因:

1,请检查你的“redirect:”的冒号后面有没有空格!这个问题会导致你的EL表达式无法获取你的传值!切记!不要加空格!不要加空格!不要加空格!重要的事情说三遍!

​ 2,网络上还有种说法,说是因为接收参数值的 controller 没有加上@ModelAttribute的形参,导致无法接收,具体本人也没有出现过这问题,不是很清楚。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值