我创建了一个使用 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>