JSFとマネージドBeanを使用する簡単なアプリケーションを作成しました。マネージドBeanから、データベースにデータを格納するSpringBeanをインスタンス化しようとしています。ただし、nullPointerExcpetionを取得したため、「@Autowired」アノテーションが機能しないようです。SpringでJSFとマネージドBeanを使用する方法に関連するすべてのトピックを読みましたが、問題を解決できませんでした。誰かが次のコードを見てヒントを教えてくれるかもしれません。
########## ManagedBean ######### @成分 @Scope( "request") @Qualifier( "memberBean") パブリッククラスProjectEntityHandlerBean {{ プライベートリストprojectList; @Autowired プライベートProjectBeanLocalprojectBean; public ProjectEntityHandlerBean() {{ } public List getProjectList(){ projectListを返します。 } public String getAllProjects() {{ projectList = projectBean.getAllProjects(); 「true」を返します。 }
サービスビーン
@サービス パブリッククラスProjectBeanはProjectBeanLocalを実装します{ @PersistenceContext プライベートEntityManagerem; / ** *デフォルトのコンストラクタ。 * / public ProjectBean(){ //TODO自動生成されたコンストラクタスタブ } @Transactional パブリックリストgetAllProjects() {{ System.out.println( "ProjectBeanが呼び出されました"); クエリquery=em.createQuery( "SELECT p FROM Project p"); @SuppressWarnings( "unchecked") プロジェクトの一覧表示=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>