J'utilise JSF et JPA pour mon application.
Le SA est JBOSS 4.0.
Je veux afficher dans ma page jsf des données:
Voici la structure de mon application:
J'ai crée un Dao qui fait des requêtes jpql:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public class CocktailDao implements IDao { @PersistenceContext //private EntityManager em; //stores a reference to global EMF for acquiring EM protected JPAResourceBean jpaResourceBean; public JPAResourceBean getJpaResourceBean() { return jpaResourceBean; } // obtenir tous les cocktails public List<Cocktail> getAll() { //Create an EntityManager from the Factory stored in the JPAResourceBean EntityManager em = jpaResourceBean.getEMF().createEntityManager(); return em.createQuery("select c from Cocktail c").getResultList(); }
dans mon fichier faces-config.xml:
voici mon cocktailManagerBean:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 <managed-bean> <managed-bean-name>cocktailManagerBean</managed-bean-name> <managed-bean-class>bean.CocktailManagerBean</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>cocktailDao</property-name> <value>#{cocktailDao}</value> </managed-property> </managed-bean> <managed-bean> <managed-bean-name>jpaResourceBean</managed-bean-name> <managed-bean-class>bean.JPAResourceBean</managed-bean-class> <managed-bean-scope>application</managed-bean-scope> </managed-bean> <managed-bean> <managed-bean-name>cocktailDao</managed-bean-name> <managed-bean-class>dao.CocktailDao</managed-bean-class> <managed-bean-scope>session</managed-bean-scope> <managed-property> <property-name>jpaResourceBean</property-name> <value>#{jpaResourceBean}</value> </managed-property> </managed-bean>
J'ai bien défini mon jpaRessourceBean:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 public class CocktailManagerBean{ // This caches the categories. We can assume they are non-volatile and //can cache them in this session scoped bean. protected Cocktail[] cocktails; // This attribute holds a reference to the Inventory service that will provide // data access for the ui. protected CocktailDao cocktailDao; public CocktailManagerBean() { } public Cocktail[] getCocktails(){ try{ if (this.cocktails == null){ Collection<Cocktail> tempCollection = cocktailDao.getAll(); this.cocktails = tempCollection.toArray(new Cocktail[tempCollection.size()]); } }catch (RuntimeException ex){ handleException(ex); } return this.cocktails; }
voici ma page jsp:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public class JPAResourceBean { protected EntityManagerFactory emf; public EntityManagerFactory getEMF (){ if (emf == null){ emf = Persistence.createEntityManagerFactory("jpa"); } return emf; } }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 <f:view> <h:dataTable value="#{cocktailManagerBean.cocktails}" var="menuItem" > <h:outputText value="#{menuItem.nomCocktail}"/> </h:dataTable> </f:view>
Voici mon code error:
Je ne comprends pas car j'ai bien défini cette propriété et son getter.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 ERROR [[jsp]] Servlet.service() for servlet jsp threw exception javax.faces.el.PropertyNotFoundException: Bean: dao.CocktailDao, property: jpaResourceBean
Quelqu'un a une idée svp?
Merci
Partager