gpt4 book ai didi

java - 对象为空,但应用程序的行为就像不是

转载 作者:行者123 更新时间:2023-12-01 13:42:22 24 4
gpt4 key购买 nike

这是一个简单的 Spring MVC 应用程序,应检查学生是否在数据库中。如果是这样,应用程序应该加载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;

这是我的 Controller :

    @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,应用程序的行为就像学生在数据库中一样并加载 Student.jsp。谁能解释一下为什么吗?

indexNumber 不是 id,只是 Student 类中的一些唯一字段。

最佳答案

您完全忽略了 studentService 返回的值

studentService.search(indexNumber);

您的 student 变量绑定(bind)到 Spring 创建的对象,并在调用您的方法时将其用作参数。该对象几乎永远不会为 null。自从

student.equals(null);

如果正确实现,永远不会返回true,您的else始终会被执行。

我不知道您想对 student 模型属性做什么,但获取您的服务返回的值并使用它

student = studentService(indexNumber);
if (student == null) {
...
} else {
...
}

关于java - 对象为空,但应用程序的行为就像不是,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20624295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com