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>