妙用 redirect

作用:从一个@RequestMapping 中存储的数据传到另一个 @RequestMapping 中

使用手段: RedirectAttributes和@ModelAttribute

一个栗子: 

@RequiresPermissions("quota:quotaSystem:edit")
@RequestMapping(value = "delete")
public String delete(QuotaSystem quotaSystem, RedirectAttributes redirectAttributes) {
 //使用addFlashAttribute来设置重定向时需要传递的参数。
 redirectAttributes.addFlashAttribute("myflag",quotaSystem.getQuotaSystemFlag());        //需要存储字段
 quotaSystemService.delete(quotaSystem);
 addMessage(redirectAttributes, "删除成功");
 return "redirect:"+Global.getAdminPath()+"/quota/quotaSystem/deletelist";
}

@RequiresPermissions("quota:quotaSystem:view")
@RequestMapping(value = "deletelist")
//要重定向的方法,使用@ModelAttribute注解将参数拿到
public String deletelist(@ModelAttribute("myflag") String myflag ,Model model,QuotaSystem quotaSystem, HttpServletRequest request, HttpServletResponse response) {
 quotaSystem.setQuotaSystemFlag(myflag);
 Page<QuotaSystem> page = quotaSystemService.findPage(new Page<QuotaSystem>(request, response), quotaSystem);
 model.addAttribute("page", page);
 model.addAttribute("quotaSystemFlag", quotaSystem.getQuotaSystemFlag());
 return "modules/quota/quotaSystemList";
}

参考:https://blog.youkuaiyun.com/liushangzaibeijing/article/details/79063288

 

 

在 JSP 中提交响应后无法调用 `redirect`,可能有多种原因,以下是一些常见问题及对应的解决办法: ### 响应已提交 当响应已经提交(即已经向客户端发送了部分数据),就不能再进行重定向操作。可以在调用 `redirect` 之前,确保没有向客户端输出任何内容。例如,检查 JSP 文件开头是否有空白字符,因为这些空白字符可能会导致响应提前提交。 ### 示例代码 ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% // 确保在没有输出内容前进行重定向 if (!response.isCommitted()) { response.sendRedirect("/03-03/absolute/result/result.jsp"); } %> ``` ### 异常处理 如果在重定向过程中抛出异常,也会导致重定向失败。可以添加异常处理代码,捕获并处理可能出现的异常。 ### 示例代码 ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% try { if (!response.isCommitted()) { response.sendRedirect("/03-03/absolute/result/result.jsp"); } } catch (IllegalStateException e) { // 处理响应已提交的异常 out.println("响应已提交,无法重定向: " + e.getMessage()); } catch (Exception e) { // 处理其他异常 out.println("重定向时发生错误: " + e.getMessage()); } %> ``` ### 路径问题 确保重定向的路径是正确的。错误的路径会导致重定向失败。可以使用绝对路径或相对路径,根据实际情况进行选择。 ### 示例代码 ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% if (!response.isCommitted()) { // 使用绝对路径 response.sendRedirect("/03-03/absolute/result/result.jsp"); // 或者使用相对路径 // response.sendRedirect("result.jsp"); } %> ``` ### Spring MVC 中的重定向 如果是在 Spring MVC 中,确保返回的字符串中正确添加了 `redirect:` 前缀。 ### 示例代码 ```java import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class MyController { @RequestMapping("/list05") public String list5() { System.out.println("!!!!!!!!!!!!!!!!!"); return "redirect:list.jsp"; } } ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值