SpringMVC后端controller带参数重定向到controller的另一个地址

1.可以使用直接拼接url的方法,但会出现中文乱码问题,可以使用java.net.URLEncoder.encode()方法对需要传递的中文进行编码,然后在拼接到url上。如下

@RequestMapping("updateEmployeeById")
    public String updateEmployeeById(String ename,Model model) {
        try {
            String n = java.net.URLEncoder.encode(ename,"UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return "redirect:" + adminPath + "/employee/list?name=" + n;
    }
@RequestMapping(value = {"list"})
    public String list(String name) {
    	System.out.println(name);
        return "modules/employee/employeeList";
    }

2.可以使用RedirectAttributes的addAttribute()方法,自动把参数拼接到url上。如下

    @RequestMapping("updateEmployeeById")
    public String updateEmployeeById(String ename, String edepartmentNumber, String edepartmentName, String estate, String estartDate, String eendDate, Employee employee, String oldName, Model model, RedirectAttributes redirectAttributes) {
        redirectAttributes.addAttribute("ename",ename);
        redirectAttributes.addAttribute("edepartmentNumber",edepartmentNumber);
        redirectAttributes.addAttribute("edepartmentName",edepartmentName);
        redirectAttributes.addAttribute("estate",estate);
        redirectAttributes.addAttribute("estartDate",estartDate);
        redirectAttributes.addAttribute("eendDate",eendDate);
        try {
            String n = java.net.URLEncoder.encode(ename,"UTF-8");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return "redirect:" + adminPath + "/employee/list?repage";
    }

	@RequestMapping(value = {"list"})
    public String list(String ename, String edepartmentNumber, String edepartmentName, String estate, String estartDate, String eendDate, Employee e, HttpServletRequest request, HttpServletResponse response, Model model, Date startDate, Date endDate) {
        SimpleDateFormat data = new SimpleDateFormat("yyyy-MM-dd");
        if (ename != null && ename != "") {
            e.setName(ename);
        }
        EmployeeDepartment employeeDepartment = new EmployeeDepartment();
        if (edepartmentNumber != null && edepartmentName != null) {
            employeeDepartment.setDepartmentName(edepartmentName);
            employeeDepartment.setDepartmentNumber(edepartmentNumber);
            e.setDepartment(employeeDepartment);
        }
        if (estate != null && estate != "") {
            e.setState(estate);
        }
        if(estartDate != null) {
            try {
                startDate = data.parse(estartDate);
            } catch (ParseException ex) {
                ex.printStackTrace();
            }
        }
        if(eendDate != null) {
            try {
                endDate = data.parse(eendDate);
            } catch (ParseException ex) {
                ex.printStackTrace();
            }
        }

        Page<Employee> page = employeeService.findEmployee(new Page<Employee>(request, response,10), e, startDate, endDate);

        if (startDate != null) {
            model.addAttribute("startDate", data.format(startDate));
        } else {
            model.addAttribute("startDate","");
        }
        if (endDate != null) {
            model.addAttribute("endDate", data.format(endDate));
        } else {
            model.addAttribute("endDate","");
        }

        for(Employee employee: page.getList()) {
            employee.setDate(data.format(employee.getEntryDate()));
        }
        model.addAttribute("e", e);
        model.addAttribute("page", page);
        return "modules/employee/employeeList";
    }

3.使用RedirectAttributes的addFlashAttribute()方法,用法和addAttribute()方法相同,但它不会在url中拼接参数。而且取值的时候需要使用@ModelAttribute注解。

@RequestMapping("updateEmployeeById")
    public String updateEmployeeById(String name,Model model, RedirectAttributes redirectAttributes) {
         redirectAttributes.addAttribute("name",name);
        return "redirect:" + adminPath + "/employee/list";
    }
@RequestMapping(value = {"list"})
    public String list(@ModelAttribute("name")String name) {
    	System.out.println(name);
        return "modules/employee/employeeList";
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值