Pb avec la récupération de la ligne selection

Résolu/Fermé
lucky82 Messages postés 89 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 16 juin 2008 - 6 juin 2008 à 23:02
lucky82 Messages postés 89 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 16 juin 2008 - 7 juin 2008 à 13:10
BJR à tous,
je travaille avec eclipse europa, hibernate2 et jsf. Oracle comme SGBD

En fait j'arrive pas é récupérer la ligne selectionnée dans un composant <h:datatable>:


page1.jsp

<h:dataTable  border="1" width="885" cellspacing="1" rules="all" value="#{programme.listToDataModel}" var="prg"  >
	<h:column>
	<f:facet name="header" >
	<h:outputText value="Num" />
	</f:facet>
	<h:outputText value="#{programme.num}"/>
	</h:column>
	<h:column>
	<f:facet name="header">
	<h:outputText value="Réf" />
	</f:facet>
	<h:outputText value="#{prg.idProgramme}" />
	</h:column>
	<h:column>
	<f:facet name="header">
	<h:outputText value="Désignation" />
         </f:facet>
        <h:outputText value="#{prg.designationProgramme}" />
	</h:column>
	<h:column>
	<f:facet name="header">
	<h:outputText value="Objet" />
	</f:facet>
	<h:outputText value="#{prg.objetProgramme}" />
	</h:column>
	<h:column>
	<f:facet name="header">
	<h:outputText value="Montant" />
	</f:facet>
	<h:outputText value="#{prg.montantProgramme}" />
	</h:column>
	<h:column>
	<f:facet name="header">
	<h:outputText value="Docs" />
	</f:facet>
	<h:commandLink hreflang="ges_docs_details.jsf"  action="#{documentsprogramme.getSelectedRow}" >
	<img src="images/navbits_finallink.gif" height="18" border="0" />
	</h:commandLink>
 	</h:column>
<:H:datatable>


page1 doit renvoyer vers ---> page2.jsp

documentsprogramme.java

	private List<Documents> ListeDocProg;
	private DataModel dataModel;
	private Programme o;

	public List<Documents> getListeDocumentsProg(Integer IdProgramme ){
		
		try { 
		      Session session = HibernateUtil.currentSession(); 
		      
		      ListeDocProg= new ArrayList<Documents>();
		      List list = session.find("from DocumentsProgramme where id_programme="+IdProgramme); 
		      Iterator it = list.iterator(); 
		      
		      while(it.hasNext()) { 
		    	  Documents doc = (Documents)it.next(); 
		    	  ListeDocProg.add(doc);				        
		      } 
		      
		      HibernateUtil.closeSession(); 
		 } catch (HibernateException e) { 
		      e.printStackTrace(); 
		 }  
		 return ListeDocProg;
	}

	public Object getRowData(){
         return dataModel.getRowData();
     }
	
	public String getSelectedRow(){
		
		try {   
			o = new Programme();
			o =(Programme) dataModel.getRowData();
			int index = dataModel.getRowIndex();

			//Programme p=new Programme();
			System.out.print("hiiiiiii"+o.getIdProgramme());

		}catch (Exception npe) {            
			//this.o = new Programme();
			npe.printStackTrace();
		}    

		return "ok";
	}


Programme.java

	public List<Programme> getListeProgrammes(){
		
		
		/*~~lecture de la liste des programmes existants à partir de la table Programe ~~*/
		try { 
		      Session session = HibernateUtil.currentSession(); 
		      
		      ListeProgrammes= new ArrayList<Programme>();
		      List list = session.find("from Programme"); 
		      Iterator it = list.iterator(); 
		      
		      while(it.hasNext()) { 
		    	  Programme prg = (Programme)it.next(); 
		    	  ListeProgrammes.add(prg);				        
		      } 
		      
		      HibernateUtil.closeSession(); 
		 } catch (HibernateException e) { 
		      e.printStackTrace(); 
		 }  
		 return ListeProgrammes;
	}

	public DataModel getListToDataModel(){
		
		if (dataModel == null)
			dataModel= new ListDataModel();

		ListeProgrammes=getListeProgrammes();
		dataModel.setWrappedData(ListeProgrammes);
		return dataModel;
	}

	public int getNum() {
		Num++;
		return Num;
	}



La liste des programme s'affiche, mais qd je clique sur la commandLink, j'ai pas le print dans la console, et de plus, j'ai un message d'erreur:

java.lang.NullPointerException
	at com.safaqat.hibernate.Documentsprogramme.getSelectedRow(Documentsprogramme.java:69)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:152)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:276)
	at org.apache.jasper.el.JspMethodExpression.invoke(JspMethodExpression.java:68)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102)
	at javax.faces.component.UICommand.broadcast(UICommand.java:387)
	at javax.faces.component.UIData.broadcast(UIData.java:926)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:458)
	at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:763)
	at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:82)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:265)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)


ca fait plus d'une semaine que je suis bloquée sur ce pb, merci d'avance

1 réponse

Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 328
7 juin 2008 à 11:08
Bonjour,
En ce qui concerne l'erreur que tu as, elle provient de la méthode getSelectedRow et c'est un NPE, donc elle provient forcément de ton bloc catch. Autrement dit, ça ne plante pas ton programme, ça effectue les traitements que tu as demandé dans ton bloc catch (ici tu demandes d'afficher la pile des appels, ce que tu reçois donc dans ta console).

A mon avis regarde de ce côté là : si tu as un NPE à chaque exécution, ça veut dire que ta méthode getSelectedRow ne fonctionne pas car elle n'exécute jamais le traitement pour laquelle elle a été programmée. Corrige donc cette méthode et revient nous tenir au courant.

Cordialement.
0
lucky82 Messages postés 89 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 16 juin 2008
7 juin 2008 à 13:10
il fallait juste mettre la méthode getSelectedRow dans la meme classe que getListToDataModel!
pb resolu
0