我创建了一个使用 JSF 和托管 bean 的简单应用程序。我试图从托管 bean 实例化一个将数据存储到数据库的 spring bean。但是“@Autowired”注释似乎不起作用,因为我得到了一个 nullPointerExcpetion。我阅读了有关如何使用 JSF 和 Spring 托管 bean 的所有相关主题,但无法解决问题。也许有人可以看看下面的代码并给我一个提示?
########## ManagedBean #########
@零件
@Scope("请求")
@Qualifier("memberBean")
公共类 ProjectEntityHandlerBean
{
私有列表项目列表;
@自动连线
私人项目豆本地项目豆;
公共 ProjectEntityHandlerBean()
{
}
公共列表 getProjectList() {
返回项目列表;
}
公共字符串 getAllProjects()
{
projectList = projectBean.getAllProjects();
返回“真”;
}
服务 Bean
@服务
公共类 ProjectBean 实现 ProjectBeanLocal {
@PersistenceContext
私人 EntityManager em;
/**
* 默认构造函数。
*/
公共项目Bean(){
// TODO 自动生成的构造函数存根
}
@Transactional
公共列表 getAllProjects()
{
System.out.println("ProjectBean 调用");
查询 query = em.createQuery("SELECT p FROM Project p");
@SuppressWarnings("未选中")
列出项目 = query.getResultList();
返回项目;
}
faces.config.xml
<application>
<el-resolver>org.springframework.web.jsf.el.SpringBeanFacesELResolver</el-resolver>
</application>
<managed-bean>
<managed-bean-name>loginBean</managed-bean-name>
<managed-bean-class>com.example.controller.LoginBean</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
<managed-bean>
<managed-bean-name>ProjectEntityHandlerBean</managed-bean-name>
<managed-bean-class>com.example.controller.ProjectEntityHandlerBean</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>