好大的坑:
今天封装一个povo,就在写代码一切正常的时候,重定向出现了一个问题,报了一个莫名其妙的错,错误信息:(org.apache.ibatis.ognl.OgnlException: source is null for getProperty(null, “employeeName”)),
搞了好久只解决了最终的问题,但是没有搞懂为什么会出现这样的一个错误,在正常入参查询的时候如下代码;
@RequestMapping("/getFiles")
public String getFiles(EmployeeAndProgram employee, Model model){
List<Employee> list = fileService.getFiles(employee);
model.addAttribute("file",list);
return "file/file";
}
这样简单的查询是没有问题的(后台是动态sql)
但是问题来了经过重定向为什么employee中的属性为什么跟直接调用多个不一定样呢?(没搞懂)
问题就出在这里,但是自己一直没想明白为什么会出现这样的情况>带一段代码
控制器的部分代码:
@Autowired
private FileService fileService;
@Autowired
private EmployeeService employeeService;
@RequestMapping("/getFiles")
public String getFiles(EmployeeAndProgram employee, Model model){
List<Employee> list = fileService.getFiles(employee);
model.addAttribute("file",list);
return "file/file";
}
@RequestMapping("/insertEmployee2")
public String insert(Employee employee){
employeeService.insertEmployee(employee);
return "redirect:/getFiles";
}
povo的代码:
package com.rlw.myproject.povo;
import com.rlw.myproject.bean.Employee;
import com.rlw.myproject.bean.Program;
public class EmployeeAndProgram {
private Employee employee;
private Program program;
public EmployeeAndProgram() {
}
public EmployeeAndProgram(Employee employee, Program program) {
this.employee = employee;
this.program = program;
}
public Employee getEmployee() {
return employee;
}
public void setEmployee(Employee employee) {
this.employee = employee;
}
public Program getProgram() {
return program;
}
public void setProgram(Program program) {
this.program = program;
}
@Override
public String toString() {
return "EmployeeAndProgram{" +
"employee=" + employee +
", program=" + program +
'}';
}
}
Employee的部分代码:
package com.rlw.myproject.bean;
import com.fasterxml.jackson.annotation.JsonFormat;
import org.springframework.format.annotation.DateTimeFormat;
//import java.sql.Date;
import java.sql.Time;
import java.sql.Timestamp;
import java.util.Date;
import java.util.List;
public class Employee{
private Integer employeeId;
private String employeeName;
private String employeeCardid;
private String employeeStatus;
private String employeeDepartment;
private String employeeWorkplace;
private String employeeSex;
private String employeeSchool;
//新增
private String id;
}
最后还是使用了动态sql,加了一个判断条件解决的问题
总结:问题的主要原因就是出在重定向后入参的内容不一样,重定向之后入参povo与简单类型有异同。至于为什么不一样这里没有搞明白,如果有大神懂的话,方便评论让小白的我学习学习。