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

Résolu
lucky82 Messages postés 89 Date d'inscription   Statut Membre Dernière intervention   -  
lucky82 Messages postés 89 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

1 réponse

Marco la baraque Messages postés 996 Date d'inscription   Statut Contributeur Dernière intervention   329
 
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   Statut Membre Dernière intervention  
 
il fallait juste mettre la méthode getSelectedRow dans la meme classe que getListToDataModel!
pb resolu
0