在 Spring MVC 中如何使用 RedirectView 和 RedirectAttributes?

  • by

使用 Spring MVC 开发 Java Web 应用时,常见的情况是在操作完成后重定向到指定的 URL。例如,当用户单击表单上的“保存”按钮创建新项目后,将被重定向到项目列表页面。

使用 Spring MVC 重定向的代码:

@PostMapping("/items/save")
public String saveItem(@ModelAttribute("item") Item item) {
    service.save(item);    
     
    return "redirect:/items";
}

但是,如果想向页面发送内容怎么办? 例如,将字符串“The item has been saved successful”发送到项目列表页面。 在这种情况下,可以使用 RedirectView 和 RedirectAttributes:

@PostMapping("/items/save")
public RedirectView saveItem(@ModelAttribute("item") Item item, RedirectAttributes ra) {
     
    service.save(item);
     
    RedirectView rv = new RedirectView("/items", true);
     
    ra.addFlashAttribute("message", "The item has been saved successfully.");
     
    return rv;
}

然后,目标页面可以直接使用 message 属性的值。

注意,在 RedirectView 构造函数中指定的 URL 可以是绝对的,也可以是相对的。 如果这样指定重定向 URL:

RedirectView rv = new RedirectView("/items");

然后它是相对于 Web 服务器根目录的。如果要使用相对于应用程序上下文路径的 URL,则需要将第二个标志设置为 true:

RedirectView rv = new RedirectView("/items", true);

RedirectAttributes 类的 addFlashAttribute() 方法使属性值可以在目标页面使用,使用后会立即将其删除。

也可以使用 “redirect:/URL” 形式的 String 代替 RedirectView 对象。 例如:

@PostMapping("/items/save")
public String saveItem(@ModelAttribute("item") Item item, RedirectAttributes ra) {
     
    service.save(item);
     
    ra.addFlashAttribute("message", "The item has been saved successfully.");
     
    return "redirect:/item";
}

以上就是使用 Spring MVC 中将属性值发送到重定向页面的示例。

⬅返回目录

发表评论

电子邮件地址不会被公开。 必填项已用*标注