这是一个简单的Spring MVC应用程序,应该检查学生是否在数据库中。如果是这样,app应该加载student.jsp页面,否则它应该重定向到addStudent.jsp。
我在服务层中有这个:
Session session = sessionFactory.getCurrentSession();
List studentList = session.createCriteria(Student.class)
.add(Restrictions.eq("indexNumber", indexNum))
.list();
if(studentList.isEmpty())
return null;
else {
Student student = (Student)studentList.get(0);
return student;
这是我的控制者:
@RequestMapping(value="/search", method = RequestMethod.POST)
public String postSearchStudent(@RequestParam(value = "indexNumber") String indexNumber,
@ModelAttribute("studentSearchAttribute") Student student) {
logger.debug("Received request to search for a student");
studentService.search(indexNumber);
if (student.equals(null))
return "redirect:/essays/main/student/add";
else
return "student";
}
但它无法正常工作 - 即使服务返回null,app的行为就像学生在数据库中并加载student.jsp一样。有人可以解释一下原因吗?
indexNumber不是id,只是Student类中的一些唯一字段。
答案 0 :(得分:1)
您完全忽略了studentService
通过
studentService.search(indexNumber);
您的student
变量绑定到Spring创建的对象,并在调用方法时用作参数。那个对象几乎永远不会是null
。从那以后
student.equals(null);
如果正确实施,将永远不会返回true
,您的else
将始终执行。
我不知道您想对student
模型属性做什么,但获取服务返回的值并使用它
student = studentService(indexNumber);
if (student == null) {
...
} else {
...
}
答案 1 :(得分:0)
如果 null 检查
,请尝试 == 而不是 .equalsif (student==null)
return "redirect:/essays/main/student/add";
else
return "student";