Bonjour,
l'ereur qu'eclipse a donné est:
20 mai 2012 10:43:41 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: "Servlet.service()" pour la servlet Faces Servlet a généré une exception
java.lang.IllegalArgumentException: entity for parameter binding cannot be null
at org.hibernate.internal.AbstractQueryImpl.resolveEntityName(AbstractQueryImpl.java:587)
at org.hibernate.internal.AbstractQueryImpl.setEntity(AbstractQueryImpl.java:645)
at com.PhaseHome.findByMission(PhaseHome.java:135)
at beans.MissionBean.getPhases(MissionBean.java:57)
at beans.MissionBean.<init>(MissionBean.java:42)
le code de manager.jsp:
ici il s'agit de 2 selectItems :un select des missions missionBean.missions et un select des phases a partir d'une mission
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <h:outputLabel value="Missions:"></h:outputLabel><br> <h:selectOneMenu value="#{missionBean.description}" onchange="submit()" valueChangeListener="#{missionBean.changeMission}" immediate="true" > <f:selectItems value="#{missionBean.missions}"/> </h:selectOneMenu> <h:outputLabel value="Phases:"></h:outputLabel><br> <h:selectOneMenu value="#{missionBean.numero}" > <f:selectItems value="#{missionBean.phases}"/> </h:selectOneMenu>
voici les lignes d'erreur:
dans PhaseHome.java:
dans MissionBean.java:Query query = session.createQuery("from Phase p where p.mission= :miss");
query.setEntity("miss", m);
le probleme c'est dans la récupération de la mission m selectionnée dans le premier selectOneMenu afin de selectionner les phases de cette mission dans le deuxieme selectOneMenu puisque la mission m est une clé etrangère dans la table phase.
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 private Mission m=null; public List<SelectItem> getPhases(){ List<SelectItem> SI=new ArrayList<SelectItem>(); List<Phase> l=new ArrayList<Phase>(); PhaseHome ph= new PhaseHome(); l=ph.findByMission(m); for(int i=0;i<l.size();i++) { SI.add(new SelectItem(l.get(i).getNumPhase())); } return SI; } //la methode changeMission : public void changeMission(ValueChangeEvent e){ MissionHome mh=new MissionHome(); String desc=e.getNewValue().toString(); m= mh.findByDescription(desc) ; }
svp aidez-moi dans ce probleme.
Merci.
Partager