在JSP页面中调用SessionFactory时获取NullPointerException



调用qs.getSubList()方法时,出现以下异常。不知道为什么它显示错误,当从其他类调用相同的方法时,它工作得很好,并返回Question列表。

java.lang.NullPointerException: Cannot invoke "org.hibernate.SessionFactory.openSession()" because "this.sessionFactory" is null

queType.jsp

<%@page import="java.util.List"%>
<%@page import="com.guru.onlineexam.entity.Question"%>
<%@page import="com.guru.onlineexam.service.QuestionService"%>
<%
QuestionService qs = new QuestionService();
List<Question> qList = qs.getSubList();
out.println(qList);
%>

QuestionService.java

@Service
public class QuestionService {
@Autowired
MainDao mainDao;
@Autowired
SessionFactory sessionFactory;
public List<Question> getSubList() {
// Session session = mainDao.getSession();
Session session = sessionFactory.openSession();
String query = "SELECT DISTINCT que_subject FROM Question";
Query q = session.createQuery(query);
List<Question> sublist = q.getResultList();
return sublist;
}
}

它向您显示了错误,因为您使用了自己而不是Spring创建的QuestionService实例。

要使服务的属性初始化,您需要从Spring上下文中获取实例ftom或将其传递给自动布线工厂。

尽管JSP中的scriptlet是描述的,但您应该在控制器组件中编写这样的内容

QuestionService qs = AppContext.getBean(QuestionService.class);

然后检查sessionFactory的属性。它不应该是null

相关内容

最新更新