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";
}