I created a simple application that s using JSF and managed beans.From the managed bean I m trying to instantiate a spring bean that stores data to the database. However "@Autowired" annotation doesnt seem to work since I get a nullPointerExcpetion. I read all the related topics of how to use JSF and managed beans with Spring but couldnt solve the problem . Maybe someone could have a look at the following piece of code and give me a hint?
########## ManagedBean ######### @Component @Scope("request") @Qualifier("memberBean") public class ProjectEntityHandlerBean { private List projectList; @Autowired private ProjectBeanLocal projectBean; public ProjectEntityHandlerBean() { } public List getProjectList() { return projectList; } public String getAllProjects() { projectList = projectBean.getAllProjects(); return "true"; }
The Service Bean
@Service public class ProjectBean implements ProjectBeanLocal { @PersistenceContext private EntityManager em; /** * Default constructor. */ public ProjectBean() { // TODO Auto-generated constructor stub } @Transactional public List getAllProjects() { System.out.println("ProjectBean invoked"); Query query = em.createQuery("SELECT p FROM Project p"); @SuppressWarnings("unchecked") List projects = query.getResultList(); return projects; }
The 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>