Bonsoir tout le monde.
J'ai un problème sur lequel je traine depuis plusieurs jours, mais j'ai pas de solution.
en fait j'ai une base de donnée contenant au moins deux tables: etudiant et sessionexam.
J'ai donc pour cela deux classes d'entité: Etudiant.java et Sessionexam.java.
Pour chacune des classes j'ai les session bean EtudiantManager.java et SessionexamManager.java
La table etudiant est en relation avec la table sessionexam.
J'ai donc un formulaire de saisie qui permet de saisir saisir un etudiant dont le code source du jsf est le suivant:
J'ai le managed bean EtudiantMbean.java
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69 <?xml version='1.0' encoding='UTF-8' ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://xmlns.jcp.org/jsf/html" xmlns:f="http://xmlns.jcp.org/jsf/core"> <h:head> <title>Saisie d'un étudiant</title> </h:head> <h:body> Saisie d'un étudiant <f:view> <h:form> <h1><h:outputText value="Create/Edit"/></h1> <h:panelGrid columns="2"> <h:outputLabel value="Nom:" for="nom" /> <h:inputText id="nom" value="#{etudiantMbean.etudiant.nom}" title="Nom" required="true" requiredMessage="The Nom field is required."/> <h:outputLabel value="Prenom:" for="prenom" /> <h:inputText id="prenom" value="#{etudiantMbean.etudiant.prenom}" title="Prenom" required="true" requiredMessage="The Prenom field is required."/> <h:outputLabel value="DateNaiss:" for="dateNaiss" /> <h:inputText id="dateNaiss" value="#{etudiantMbean.etudiant.dateNaiss}" title="DateNaiss" required="true" requiredMessage="The DateNaiss field is required."> <f:convertDateTime pattern="dd/MM/yyyy" /> </h:inputText> <h:outputLabel value="NumCNI:" for="numCNI" /> <h:inputText id="numCNI" value="#{etudiantMbean.etudiant.numCNI}" title="NumCNI" required="true" requiredMessage="The NumCNI field is required."/> <h:outputLabel value="DateDelivCNI:" for="dateDelivCNI" /> <h:inputText id="dateDelivCNI" value="#{etudiantMbean.etudiant.dateDelivCNI}" title="DateDelivCNI" required="true" requiredMessage="The DateDelivCNI field is required."> <f:convertDateTime pattern="dd/MM/yyyy" /> </h:inputText> <h:outputLabel value="AdrMail:" for="adrMail" /> <h:inputText id="adrMail" value="#{etudiantMbean.etudiant.adrMail}" title="AdrMail" /> <h:outputLabel value="Profession:" for="profession" /> <h:inputText id="profession" value="#{etudiantMbean.etudiant.profession}" title="Profession" /> <h:outputLabel value="Societe:" for="societe" /> <h:inputText id="societe" value="#{etudiantMbean.etudiant.societe}" title="Societe" /> <h:outputLabel value="NumTel:" for="numTel" /> <h:inputText id="numTel" value="#{etudiantMbean.etudiant.numTel}" title="NumTel" required="true" requiredMessage="The NumTel field is required."/> <h:outputLabel value="NumFiche:" for="numFiche" /> <h:inputText id="numFiche" value="#{etudiantMbean.etudiant.numFiche}" title="NumFiche" required="true" requiredMessage="The NumFiche field is required."/> <h:outputLabel value="MontantAttrib:" for="montantAttrib" /> <h:inputText id="montantAttrib" value="#{etudiantMbean.etudiant.montantAttrib}" title="MontantAttrib" required="true" requiredMessage="The MontantAttrib field is required."/> <h:outputLabel value="DepotDossier:" for="depotDossier" /> <h:inputText id="depotDossier" value="#{etudiantMbean.etudiant.depotDossier}" title="DepotDossier" required="true" requiredMessage="The DepotDossier field is required."/> <h:outputLabel value="RetraitPermis:" for="retraitPermis" /> <h:inputText id="retraitPermis" value="#{etudiantMbean.etudiant.retraitPermis}" title="RetraitPermis" required="true" requiredMessage="The RetraitPermis field is required."/> <h:outputLabel value="AgenceidAgence:" for="agenceidAgence" /> <h:selectOneMenu id="agenceidAgence" value="#{etudiantMbean.etudiant.agenceidAgence}" title="AgenceidAgence" required="true" requiredMessage="The AgenceidAgence field is required."> <!-- TODO: update below reference to list of available items--> <f:selectItems value="#{fixme}"/> </h:selectOneMenu> <h:outputLabel value="FormationidFormation:" for="formationidFormation" /> <h:selectOneMenu id="formationidFormation" value="#{etudiantMbean.etudiant.formationidFormation}" title="FormationidFormation" required="true" requiredMessage="The FormationidFormation field is required."> <!-- TODO: update below reference to list of available items--> <f:selectItems value="#{fixme}"/> </h:selectOneMenu> <h:outputLabel value="SessionexamidSessionExam:" for="sessionexamidSessionExam" /> <h:selectOneMenu id="sessionexamidSessionExam" value="#{etudiantMbean.etudiant.sessionexamidSessionExam}" title="SessionexamidSessionExam" required="true" requiredMessage="The SessionexamidSessionExam field is required."> <!-- TODO: update below reference to list of available items--> <f:selectItems value="#{sessionexamMbean.mesSession}" var="sessionExam" itemValue="#{sessionexamMbean.sessionExam.idSessionExam}"/> </h:selectOneMenu> <h:commandButton id="submit" value="Enregistrer" action="#{etudiantMbean.saveEtudiant()}"></h:commandButton> </h:panelGrid> </h:form> </f:view> </h:body> </html>
et le managed bean SessionexamMbean.java
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50 /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package managedbeans; import enitities.Etudiant; import java.io.Serializable; import javax.ejb.EJB; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import session.EtudiantManager; /** * * @author La Nokims */ @ManagedBean(name="etudiantMbean") @SessionScoped public class EtudiantMbean implements Serializable{ private Etudiant etudiant; @EJB private EtudiantManager etudiantManager; /** * Creates a new instance of EtudiantMbean */ public EtudiantMbean() { this.etudiant = new Etudiant(); } public void setEtudiant(Etudiant ed){ this.etudiant = ed; } public Etudiant getEtudiant(){ return etudiant; } public String saveEtudiant(){ etudiantManager.addEtudiant(etudiant); return "Etudiant sauvegardé avec succès"; } }
au niveau des SelectOneMenu je voudrais les remplir avec les informations contenues dans la table sessionexam mais lors de la validation du formulaire ne récupérer que l'id de la session d'examen choisie.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package managedbeans; import enitities.Sessionexam; import java.io.Serializable; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import javax.annotation.PostConstruct; import javax.ejb.EJB; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.model.SelectItem; import javax.inject.Named; import session.SessionexamManager; /** * * @author La Nokims */ @Named(value="sessionexamMbean") @ManagedBean @SessionScoped public class SessionexamMbean implements Serializable { private List<SelectItem> mesSession = new ArrayList<SelectItem>(); private Sessionexam sessionExam; @EJB private SessionexamManager sessionexamManager; /** * Creates a new instance of SessionexamMbean */ public SessionexamMbean() { this.sessionExam = new Sessionexam(); } public void setSessionExam(Sessionexam se){ this.sessionExam = se; } public Sessionexam getSessionExam(){ return sessionExam; } public String saveSessionExam(){ sessionexamManager.addSessionExam(sessionExam); return "Session d'examen sauvegardé avec succès"; } @PostConstruct public void init() { getListItemsSessionExam(); } public List<Sessionexam> getMaListe(){ List<Sessionexam> session = sessionexamManager.getAllSessionExam(); return session; } public void getListItemsSessionExam(){ for(Sessionexam val: getMaListe()){ this.mesSession.add(new SelectItem(val.getIdSessionExam(), DateToString(val.getDateExam()))); } } public String DateToString(Date date){ SimpleDateFormat formatDateJava = new SimpleDateFormat("dd/MM/yyyy"); return formatDateJava.format(date); } }
Lors de l'exécution du formulaire j'ai cette erreur: Erreur lors de l’injection de ressources dans le bean géré «sessionexamMbean»
Voici le Stack Trace correspondant à l'erreur:
Je travaille sous Netbean 8.0RC et j'utilise Glassfish comme serveur d'application.
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137 com.sun.faces.mgbean.ManagedBeanCreationException: Erreur lors de linjection de ressources dans le bean géré «sessionexamMbean» at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:227) at com.sun.faces.mgbean.BeanBuilder.build(BeanBuilder.java:103) at com.sun.faces.mgbean.BeanManager.createAndPush(BeanManager.java:409) at com.sun.faces.mgbean.BeanManager.create(BeanManager.java:269) at com.sun.faces.el.ManagedBeanELResolver.resolveBean(ManagedBeanELResolver.java:244) at com.sun.faces.el.ManagedBeanELResolver.getValue(ManagedBeanELResolver.java:116) at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176) at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) at com.sun.el.parser.AstIdentifier.getValue(AstIdentifier.java:116) at com.sun.el.parser.AstValue.getBase(AstValue.java:151) at com.sun.el.parser.AstValue.getValue(AstValue.java:200) at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:226) at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194) at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182) at javax.faces.component.UISelectItems.getValue(UISelectItems.java:129) at com.sun.faces.renderkit.SelectItemsIterator.initializeItems(SelectItemsIterator.java:208) at com.sun.faces.renderkit.SelectItemsIterator.hasNext(SelectItemsIterator.java:135) at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:762) at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:847) at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:297) at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:924) at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:312) at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185) at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:894) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) at javax.faces.render.Renderer.encodeChildren(Renderer.java:176) at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:894) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1859) at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:443) at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:647) at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1682) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:318) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:160) at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:734) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:673) at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:99) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:174) at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:357) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:260) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:188) at org.glassfish.grizzly.http.server.HttpHandler.runService(HttpHandler.java:191) at org.glassfish.grizzly.http.server.HttpHandler.doHandle(HttpHandler.java:168) at org.glassfish.grizzly.http.server.HttpServerFilter.handleRead(HttpServerFilter.java:189) at org.glassfish.grizzly.filterchain.ExecutorResolver$9.execute(ExecutorResolver.java:119) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:288) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:206) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:136) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:114) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:77) at org.glassfish.grizzly.nio.transport.TCPNIOTransport.fireIOEvent(TCPNIOTransport.java:838) at org.glassfish.grizzly.strategies.AbstractIOStrategy.fireIOEvent(AbstractIOStrategy.java:113) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.run0(WorkerThreadIOStrategy.java:115) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy.access$100(WorkerThreadIOStrategy.java:55) at org.glassfish.grizzly.strategies.WorkerThreadIOStrategy$WorkerThreadRunnable.run(WorkerThreadIOStrategy.java:135) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:564) at org.glassfish.grizzly.threadpool.AbstractThreadPool$Worker.run(AbstractThreadPool.java:544) at java.lang.Thread.run(Thread.java:724) Caused by: com.sun.faces.spi.InjectionProviderException: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting invoke lifecycle method public void managedbeans.SessionexamMbean.init() at org.glassfish.faces.integration.GlassFishInjectionProvider.invokePostConstruct(GlassFishInjectionProvider.java:231) at com.sun.faces.mgbean.BeanBuilder.invokePostConstruct(BeanBuilder.java:221) ... 64 more Caused by: com.sun.enterprise.container.common.spi.util.InjectionException: Exception attempting invoke lifecycle method public void managedbeans.SessionexamMbean.init() at org.glassfish.faces.integration.GlassFishInjectionProvider.invokeLifecycleMethod(GlassFishInjectionProvider.java:393) at org.glassfish.faces.integration.GlassFishInjectionProvider.invokePostConstruct(GlassFishInjectionProvider.java:306) at org.glassfish.faces.integration.GlassFishInjectionProvider.invokePostConstruct(GlassFishInjectionProvider.java:229) ... 65 more Caused by: java.security.PrivilegedActionException: java.lang.reflect.InvocationTargetException at java.security.AccessController.doPrivileged(Native Method) at org.glassfish.faces.integration.GlassFishInjectionProvider.invokeLifecycleMethod(GlassFishInjectionProvider.java:376) ... 67 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.glassfish.faces.integration.GlassFishInjectionProvider$2.run(GlassFishInjectionProvider.java:382) ... 69 more Caused by: javax.ejb.EJBException at com.sun.ejb.containers.EJBContainerTransactionManager.processSystemException(EJBContainerTransactionManager.java:748) at com.sun.ejb.containers.EJBContainerTransactionManager.completeNewTx(EJBContainerTransactionManager.java:698) at com.sun.ejb.containers.EJBContainerTransactionManager.postInvokeTx(EJBContainerTransactionManager.java:503) at com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4475) at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:2009) at com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1979) at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:220) at com.sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:88) at com.sun.proxy.$Proxy233.getAllSessionExam(Unknown Source) at session.__EJB31_Generated__SessionexamManager__Intf____Bean__.getAllSessionExam(Unknown Source) at managedbeans.SessionexamMbean.getMaListe(SessionexamMbean.java:66) at managedbeans.SessionexamMbean.getListItemsSessionExam(SessionexamMbean.java:71) at managedbeans.SessionexamMbean.init(SessionexamMbean.java:62) ... 74 more Caused by: java.lang.IllegalArgumentException: NamedQuery of name: findAll not found. at org.eclipse.persistence.internal.jpa.QueryImpl.getDatabaseQueryInternal(QueryImpl.java:350) at org.eclipse.persistence.internal.jpa.EntityManagerImpl.createNamedQuery(EntityManagerImpl.java:1107) at com.sun.enterprise.container.common.impl.EntityManagerWrapper.createNamedQuery(EntityManagerWrapper.java:522) at session.SessionexamManager.getAllSessionExam(SessionexamManager.java:28) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.glassfish.ejb.security.application.EJBSecurityManager.runMethod(EJBSecurityManager.java:1081) at org.glassfish.ejb.security.application.EJBSecurityManager.invoke(EJBSecurityManager.java:1153) at com.sun.ejb.containers.BaseContainer.invokeBeanMethod(BaseContainer.java:4695) at com.sun.ejb.EjbInvocation.invokeBeanMethod(EjbInvocation.java:630) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:582) at org.jboss.weld.ejb.AbstractEJBRequestScopeActivationInterceptor.aroundInvoke(AbstractEJBRequestScopeActivationInterceptor.java:46) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) at com.sun.ejb.EjbInvocation.proceed(EjbInvocation.java:582) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.doCall(SystemInterceptorProxy.java:163) at com.sun.ejb.containers.interceptors.SystemInterceptorProxy.aroundInvoke(SystemInterceptorProxy.java:140) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at com.sun.ejb.containers.interceptors.AroundInvokeInterceptor.intercept(InterceptorManager.java:883) at com.sun.ejb.containers.interceptors.AroundInvokeChainImpl.invokeNext(InterceptorManager.java:822) at com.sun.ejb.containers.interceptors.InterceptorManager.intercept(InterceptorManager.java:369) at com.sun.ejb.containers.BaseContainer.__intercept(BaseContainer.java:4667) at com.sun.ejb.containers.BaseContainer.intercept(BaseContainer.java:4655) at com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:212) ... 80 more
Merci d'avance pour toute contribution
Partager