IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

[Struts-Layout] NullPointerException avec le datagrid


Sujet :

Struts 1 Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Par défaut [Struts-Layout] NullPointerException avec le datagrid
    bonjour

    pour utilisé datagrid j'ai suivi le tutoriel trouvé dans ce lien
    http://struts.improve-technologies.c...rid/index.html

    voila ce que j'ai fais
    j'ai modifié le form que j'avais déja comme suit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    import fr.improve.struts.taglib.layout.datagrid.Datagrid;
     
    public class ReservationForm extends ActionForm {
     
    	private Datagrid datagrid;
     
    	public void setDatagrid(Datagrid in_datagrid) {
    		datagrid = in_datagrid;
    	}
    	public Datagrid getDatagrid() {
    		return datagrid;
    	}
    voici le code de ma jsp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        <layout:datagrid property="datagrid" selectionAllowed="true" styleClass="DATAGRID" multipleSelectionAllowed="false" model="datagrid">
    		    <layout:datagridColumn  title="WAREHOUSE" property="wh" ></layout:datagridColumn > 
                <layout:datagridColumn  title="ARTICLE" property="aa" ></layout:datagridColumn >
               <layout:datagridColumn  title="PROFIL" property="pp" ></layout:datagridColumn >  
               <layout:datagridColumn  title="HLR" property="hlr2" ></layout:datagridColumn >
                <layout:datagridColumn  title="PQ" property="pq2" ></layout:datagridColumn > 
                <layout:datagridColumn  title="QTE" property="qt" ></layout:datagridColumn >    
    		</layout:datagrid>
    et pour la remplir je fais une requete et je mis le résultat dans une list en remplissant un bean "Reserv2 "

    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
     
    			rs=st.executeQuery("SELECT distinct v.trans_type,v.whs_id,v.trans_no,v.res_app_whs,a.art_art_libelle,nvl(v.profil_id,'_'),v.quantite_article,nvl(v.res_app_hlr,'_'),nvl(v.res_app_pq,'_'),v.qte_livree,(v.quantite_article-v.qte_livree)as reliquet from gss_reserv_approb v ,gss_destinataire d,gss_transaction t,gss_article a,gss_warehouse w  where (a.art_id=v.art_id) and v.trans_type='RES' and v.trans_no ='"+code+"' and v.whs_id='"+whss+"'");
    			while (rs.next())
    				{
     
    					System.out.println("["+rs.getString(1)+"],["+rs.getString(2)+"],["+rs.getString(3)+"],["+rs.getString(4)+"],["+rs.getString(5)+"]"+"],["+rs.getString(7)+"]");
     
     
    					Reserv2 swp=new Reserv2();
    				        swp.setAa(rs.getString(5).trim());
    				  		swp.setPp(rs.getString(6).trim());
    				  		swp.setWh(rs.getString(4).trim());
    				  		swp.setHlr2(rs.getString(8).trim());
    				  		swp.setPq2(rs.getString(9).trim());
    				  		swp.setQt(rs.getString(7).trim());
     
    					list.add(swp);
    				}
     
    			// Create a datagrid.
    			Datagrid lc_datagrid = Datagrid.getInstance();
     
    			// Set the bean class for new objects. We suppose SomeBean is the class of the object in the List aList.
    			lc_datagrid.setDataClass(Reserv2.class);
     
    			// Set the data
    			lc_datagrid.setData(list);
     
    			// Initialize the form
    			reservationForm.setDatagrid(lc_datagrid);
    mais j'ai NullPointerException et voici le message d'erreur :
    GRAVE: "Servlet.service()" pour la servlet jsp a lancé une exception
    java.lang.NullPointerException
    at fr.improve.struts.taglib.layout.collection.CollectionsIterator.<init>(CollectionsIterator.java:35)
    at fr.improve.struts.taglib.layout.collection.BaseCollectionTag.doStartLayoutTag(BaseCollectionTag.java:929)
    at fr.improve.struts.taglib.layout.datagrid.DatagridTag.doStartLayoutTag(DatagridTag.java:57)
    at fr.improve.struts.taglib.layout.BodyLayoutTagSupport.doStartTag(BodyLayoutTagSupport.java:36)
    at org.apache.jsp.forms.modifreserv_jsp._jspx_meth_layout_005fdatagrid_005f0(modifreserv_jsp.java:1250)
    at org.apache.jsp.forms.modifreserv_jsp._jspx_meth_layout_005fcolumn_005f8(modifreserv_jsp.java:1216)
    at org.apache.jsp.forms.modifreserv_jsp._jspx_meth_layout_005frow_005f2(modifreserv_jsp.java:1179)
    at org.apache.jsp.forms.modifreserv_jsp._jspx_meth_layout_005fform_005f0(modifreserv_jsp.java:344)
    at org.apache.jsp.forms.modifreserv_jsp._jspx_meth_html_005fhtml_005f0(modifreserv_jsp.java:215)
    at org.apache.jsp.forms.modifreserv_jsp._jspService(modifreserv_jsp.java:137)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:679)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:461)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:399)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:301)
    at org.apache.struts.action.RequestProcessor.doForward(RequestProcessor.java:1063)
    at org.apache.struts.action.RequestProcessor.processForwardConfig(RequestProcessor.java:386)
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:229)
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    at org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:627)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    je ne comprends pas ou est l'erreur ???

  2. #2
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Apparemment, le datagrid est null.
    Es-tu certain que le code de remplissage du datagrid s'exécute bien avant l'affichage de la jsp et que la liste constituée n'est pas vide ?

  3. #3
    Membre confirmé Avatar de reverse_engineer
    Inscrit en
    Juillet 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2008
    Messages : 98
    Par défaut même problème
    sincèrement j'ai eu le même problème , et une chose plus bizarre !!

    quand je veux lancer la jsp la première fois ca se lance pas .j'enlève la balise datagrid et je déploi ,puis je la rétabli et je redeploi ca marche .dès que je redémarre le conteneur de servlet tout est perdu je refais à zero

    sauf que j'obtient une erreur un peu plus différente à la fin

    java.lang.NullPointerException
    at fr.improve.struts.taglib.layout.collection.CollectionsIterator.<init>(CollectionsIterator.java:35)
    at fr.improve.struts.taglib.layout.collection.BaseCollectionTag.doStartLayoutTag(BaseCollectionTag.java:929)
    at fr.improve.struts.taglib.layout.datagrid.DatagridTag.doStartLayoutTag(DatagridTag.java:57)
    at fr.improve.struts.taglib.layout.BodyLayoutTagSupport.doStartTag(BodyLayoutTagSupport.java:36)
    at org.apache.jsp.login_jsp._jspx_meth_layout_005fdatagrid_005f0(login_jsp.java:179)
    at org.apache.jsp.login_jsp._jspx_meth_layout_005frow_005f0(login_jsp.java:143)
    at org.apache.jsp.login_jsp._jspx_meth_layout_005fform_005f0(login_jsp.java:111)
    at org.apache.jsp.login_jsp._jspService(login_jsp.java:77)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:874)
    at org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
    at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
    at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
    at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
    at java.lang.Thread.run(Unknown Source)

  4. #4
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Je vais poser la même question qu'à john_wili : le code d'initialisation du datagrid avec une collection d'objets est-il bien exécuté avant le premier affichage de la page ?

  5. #5
    Membre confirmé Avatar de reverse_engineer
    Inscrit en
    Juillet 2008
    Messages
    98
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Juillet 2008
    Messages : 98
    Par défaut
    exactement ,vous avez raison
    le problème c'est que j'ai un fichier de config très simple :

    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
     
    <struts-config>
     
    <form-beans>
    <form-bean
    name="LoginForm"
    type="LoginForm"
    />
    </form-beans>
     
     
     
    <!-- ================================================ Form Bean Definitions -->
     
        <action-mappings>
    	    <action path="/index" 
    	    name ="LoginForm"
    	    scope="session"
    	    type="LoginAction">
     
    			<forward name="failure" path="/index.jsp" redirect="true"/>
    		</action> 
     
     
     
    	</action-mappings>
     
     
     
     
    <!-- ======================================== Message Resources Definitions -->
     
        <message-resources parameter="MessageResources" />
     
     
     
     
    <!-- =============================================== Plug Ins Configuration -->
     
    <plug-in className="fr.improve.struts.taglib.layout.workflow.LayoutPlugin"/>  
     
     
      <!-- =================================================== Validator plugin -->
     
      <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property
            property="pathnames"
            value="/org/apache/struts/validator/validator-rules.xml,
                   /WEB-INF/validation.xml"/>
      </plug-in>
     
     
     
     
    </struts-config>

    je sais pas comment contourner le problème ,l'action s'execute après l'affichage ce qui donne un datagrid nul

  6. #6
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Si le code qui initialise le datagrid est dans l'Action LoginAction, cela signifie qu'il faut faire appel à index.do au premier affichage et non à index.jsp.
    Par contre, dans ce cas, il faut désactiver la validation du formulaire et ne l'activer que pour le cas où le formulaire est soumis.
    LoginAction est-elle une DispatchAction ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Struts-Layout] problème avec dynMenu
    Par vny dans le forum Struts 1
    Réponses: 3
    Dernier message: 26/11/2008, 14h01
  2. [Struts-Layout] Problème avec Datagrid
    Par Le Pharaon dans le forum Struts 1
    Réponses: 15
    Dernier message: 25/07/2007, 14h13
  3. [Struts-Layout] problème avec layout:datagrid
    Par khayri dans le forum Struts 1
    Réponses: 2
    Dernier message: 20/04/2007, 09h31
  4. [Struts-Layout] Tableau avec deux couleurs alternées
    Par yolepro dans le forum Struts 1
    Réponses: 2
    Dernier message: 18/09/2006, 16h47
  5. [Struts-layout]err. avec layout:menuItem
    Par javazer dans le forum Struts 1
    Réponses: 7
    Dernier message: 14/04/2006, 14h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo