Pb avec la récupération de la ligne selectionnée sous h:datatable / JSF

Résolu
lucky82 Messages postés 89 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 16 juin 2008 - 6 juin 2008 à 22:57
lucky82 Messages postés 89 Date d'inscription samedi 30 octobre 2004 Statut Membre Dernière intervention 16 juin 2008 - 7 juin 2008 à 13:11
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
<!-- BEGIN TEMPLATE: bbcode_code -->
Code :

<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}" >

</h:commandLink>
</h:column>
<:H:datatable>

<!-- END TEMPLATE: bbcode_code -->page1 doit renvoyer vers ---> page2.jsp

documentsprogramme.java
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
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";
}

<!-- END TEMPLATE: bbcode_code -->Programme.java
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
public List getListeProgrammes(){


/*~~lecture de la liste des programmes existants à partir de la table Programe ~~*/
try {
Session session = HibernateUtil.currentSession();

ListeProgrammes= new ArrayList();
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;
}

<!-- END TEMPLATE: bbcode_code -->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:
<!-- BEGIN TEMPLATE: bbcode_code -->

Code :
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)

<!-- END TEMPLATE: bbcode_code -->ca fait plus d'une semaine que je suis bloquée sur ce pb, merci d'avance

1 réponse

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