Spring MVC 页面跳转时传递参数
页面仍然使用 JSP,在跳转时如果想传递参数则需要用到类 RedirectAttributes。
首先看看如何打开一个普通页面:
// 登录页面(每个页面都要独立的 Action 来支持其呈现)
@RequestMapping(value = "/Index", method = RequestMethod.GET)
public String Index(Model model)
{
model.addAttribute("name", "Tom");
return "UserLogin/Index";
}
很简单,直接为 Model 对象添加属性对即可,然后在 JSP 页面里,通过 ${name} 就可以得到它的值 Tom。
那么,在页面发生了跳转的情况下该如何传递属性对参数呢?这时 RedirectAttributes 就要隆重上场了。
先上一段代码:
// 登录动作
@RequestMapping(value = "/Login", method = RequestMethod.POST)
public String Login(UserLoginDTO userLoginDTO, RedirectAttributes attr)
{
System.out.println("--Login");
System.out.println("accountId = " + userLoginDTO.getAccountId());
System.out.println("pwd = " + userLoginDTO.getPwd());
if (userLoginDTO.getAccountId() == "")
{
attr.addFlashAttribute("msg", "帐号不能为空");
return "redirect:/UserLogin/Index";
}
if (userLoginDTO.getPwd() == "")
{
attr.addFlashAttribute("msg", "密码不能为空");
return "redirect:/UserLogin/Index";
}
attr.addFlashAttribute("msg", "登录一切正常");
System.out.println(attr);
return "redirect:/UserLogin/LoginSuccess";
}
Login 方法的第二个参数已不再是 Model 了,而是 RedirectAttributes,在方法体中,随着代码的各种判断,需要去往的页面也不相同,随之需要传递的消息也可以自由变化,比如:
attr.addFlashAttribute("msg", "帐号不能为空");
return "redirect:/UserLogin/Index";
在用法上与 Model 很相似,都是属性对,上述代码将跳转至 Index.jsp 页面。
众所周知,在 Spring MVC 里页面呈现之前都需要经由对应的方法来引导,接下来为了验证这里的属性对是否真的已传递出去,可以通过以下代码来验证:
// 登录页面(每个页面都要独立的 Action 来支持其呈现)
@RequestMapping(value = "/Index", method = RequestMethod.GET)
public String Index(Model model)
{
System.out.println("--Index");
System.out.println(model);
return "UserLogin/Index";
}
打印出来的结果是:
--Index
{msg=帐号不能为空}
可以看到,attr.addFlashAttribute() 已将参数传递出去。在 JSP 页面里用法不变,即 ${msg} 就可以得到它的值。
分类:
程序
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· 展开说说关于C#中ORM框架的用法!
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?