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] valeur null dans la collectionItem


Sujet :

Struts 1 Java

  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] valeur null dans la collectionItem
    bonjour,

    j'utilise une collection dans ma jsp voici une partie de son code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <layout:collection name="collectionForm" property="resultat" styleClass="PANEL" >
         <layout:collectionItem title="CODE TRANSACTION" property="code"></layout:collectionItem>
         <layout:collectionItem title="DESTINATAIRE" property="dest"></layout:collectionItem>
         <layout:collectionItem title="WAREHOUSE" property="whs"></layout:collectionItem>
         <layout:collectionItem title="DATE" property="date"></layout:collectionItem>
         <layout:collectionItem title="RESPONSABLE" property="resp"></layout:collectionItem>
         <layout:collectionItem title="BON TRANSACTION" property="bon">
           <layout:link page="/collection.do">Visualiser le bon</layout:link>
         </layout:collectionItem>
       </layout:collection>
      </body>
    je remplis cette collection avec le résultat d'une requete
    voici une partie du code:

    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
     
    ArrayList list = new ArrayList();
     
    rs = st.executeQuery("select .........");
     
    		while (rs.next())
    		{
     
    Article art = new Article();
    			art.setCode(rs.getString(1).trim()); 
    			art.setDate(rs.getString(4).trim());
    			art.setDest(rs.getString(2).trim());
    			art.setResp(rs.getString(5).trim());
    			art.setWhs(rs.getString(3).trim());
     
    			list.add(art);
    		}
    collectionForm.setResultat(list);


    ça march bien mais quand l'un des résultats de la requete est "null"
    par exemple: "rs.getString(1).trim()"=null
    c'est à dire qu'il va mettre dans "layout:collectionItem"une valeur null
    alors il n'affiche pas la collection et il me signal une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    null pointeur exception
    pourquoi dans une ligne de la collection "layout:collectionItem"ne peut pas etre vide ,il faut qu'elle soit remplise??
    sinon comment je dois corriger mon code ??
    merci de me répondre

  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
    Essaie d'ajouter un tag logic:notEmpty dans le tag collectionItem.
    Pour que cela fonctionne, il faut ajouter l'attribut id dans le tag collection et un tag layout:write dans le tag logic:notEmpty comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <layout:collection name="collectionForm" property="resultat" id="article" styleClass="PANEL" >
         <layout:collectionItem title="CODE TRANSACTION">
            <logic:notEmpty name="article" property="code">
               <layout:write name="article" property="code"/>
            </logic:notEmpty>
         </layout:collectionItem>
         <layout:collectionItem title="DESTINATAIRE" property="dest"></layout:collectionItem>
         <layout:collectionItem title="WAREHOUSE" property="whs"></layout:collectionItem>
         <layout:collectionItem title="DATE" property="date"></layout:collectionItem>
         <layout:collectionItem title="RESPONSABLE" property="resp"></layout:collectionItem>
         <layout:collectionItem title="BON TRANSACTION" property="bon">
           <layout:link page="/collection.do">Visualiser le bon</layout:link>
         </layout:collectionItem>
       </layout:collection>
    A tester.

  3. #3
    Membre éclairé
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Par défaut
    voila se que j'ai fait

    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
     
     <layout:collection name="collectionForm" property="resultat" styleClass="FORM" id="article">
         <layout:collectionItem title="CODE TRANSACTION" property="code"></layout:collectionItem>
         <layout:collectionItem title="DESTINATAIRE" property="dest">
           <logic:notEmpty name="article" property="dest">
               <layout:write name="article" property="dest"/>
            </logic:notEmpty>
     
         </layout:collectionItem>
         <layout:collectionItem title="WAREHOUSE" property="whs"></layout:collectionItem>
         <layout:collectionItem title="DATE" property="date"></layout:collectionItem>
         <layout:collectionItem title="RESPONSABLE" property="resp"></layout:collectionItem>
         <layout:collectionItem title="BON TRANSACTION" property="bon">
           <layout:link page="/collection.do">Visualiser le bon</layout:link>
         </layout:collectionItem>
       </layout:collection>
    la collonne (destinataire) est la collonne qui peut etre vide

    mais il me génère toujours la meme erreur
    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
     
    exception 
     
    javax.servlet.ServletException
    	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
    	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
     
    cause mère 
     
    java.lang.NullPointerException
    	com.yourcompany.struts.action.CollectionAction.execute(CollectionAction.java:47)
    	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

  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
    Si tu avais bien regardé mon exemple, tu aurais vu que je n'ai pas mis l'attribut property dans le tag collectionItem.

    Il faut donc l'enlever comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
         <layout:collectionItem title="DESTINATAIRE">
           <logic:notEmpty name="article" property="dest">
               <layout:write name="article" property="dest"/>
            </logic:notEmpty>       
         </layout:collectionItem>

  5. #5
    Membre éclairé
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Par défaut
    désolé pour l'erreur de tout à l'heure
    j'ai refait le code mais toujours la meme erreur

    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
     
    <layout:form action="/collection.do" method="post">
       <layout:text property="hidden" value="default" mode="H,H,H"></layout:text>
       <layout:collection name="collectionForm" property="resultat" styleClass="FORM" id="article">
         <layout:collectionItem title="CODE TRANSACTION" property="code" sortable="true"></layout:collectionItem>
         <layout:collectionItem title="DESTINATAIRE">
           <logic:notEmpty name="article" property="dest">
               <layout:write name="article" property="dest"/>
            </logic:notEmpty>
     
         </layout:collectionItem>
         <layout:collectionItem title="WAREHOUSE" property="whs"></layout:collectionItem>
         <layout:collectionItem title="DATE" property="date"></layout:collectionItem>
         <layout:collectionItem title="RESPONSABLE" property="resp"></layout:collectionItem>
         <layout:collectionItem title="BON TRANSACTION" property="bon" action="/recupere.do" paramId="code_art" paramProperty="code_art">
             <center>   Visualiser le bon   </center>
         </layout:collectionItem>
       </layout:collection>
    l'erreur

    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
     
    exception 
     
    javax.servlet.ServletException
    	org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
    	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
     
     
    cause mère 
     
    java.lang.NullPointerException
    	com.yourcompany.struts.action.CollectionAction.execute(CollectionAction.java:50)
    	org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
    	org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
    	org.apache.struts.action.ActionServlet.process(ActionServlet.java:1194)
    	org.apache.struts.action.ActionServlet.doGet(ActionServlet.java:414)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:690)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

  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
    As-tu pensé à ajouter au début de la jsp la directive taglib qui pointe sur la tld struts-logic.tld ?

  7. #7
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Par défaut
    bonjour
    pour le tag logic, il existe deja dans ma jsp

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <%@ page language="java" pageEncoding="ISO-8859-1"%>
     
    <%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %>
    <%@ taglib uri="/WEB-INF/struts-logic.tld" prefix="logic" %>
    <%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>
    mais toujours la meme erreur

  8. #8
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Par défaut
    bon on m'a donné cette solution

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
         <logic:exist property="dest" name="article">
    <layout:collectionItem  property="dest" title="DESTINATAIRE" width="100"></layout:collectionItem>
    </logic:exist>
     
    <logic:notexist property="dest" name="article">
    	<layout:collectionItem title=" dest"  >
      	<center>
      	_
      	</center>
      	</layout:collectionItem>
    </logic:notexist>

    mais le problème: j'ai pas trouvé le tag <logic:exist> ?

    et avec le tag <logic:notEmpty> ça marche pas

    aidez moi svp

  9. #9
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Peux-tu expliquer mieux, j'ai du mal là...

    Comment peux-tu avoir une valeur null alors que tu charges avec rs.getString(1).trim() ?
    Si rs.getString(1) renvoyait null, ta méthode trim() provoquerait NullPointerException.
    Au niveau de Struts-Layout, tu peux afficher une colonne dont la valeur vaut null.
    Peux-tu vérifier dans Struts-Layout.properties la valeur de ce paramètre ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    display.null.fields = true
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre confirmé
    Inscrit en
    Avril 2008
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 187
    Par défaut
    merci pour votre reponse j'ai vérifier dans le struts-layout.properties elle est deja à true

    mais le problème est resolu et voici la solution
    au niveau de la requete j'ai ajouter la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    nvl(NomCollone,'chaineCaractere')
    et ça marche j'ai remplacé les valeurs null par (_) et apres j'affiche la collection

    merci pour votre aide

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

Discussions similaires

  1. [Struts-Layout] info bulle dans un collectionItem
    Par asm37 dans le forum Struts 1
    Réponses: 1
    Dernier message: 03/01/2008, 16h29
  2. Affcecter une valeur NULL dans une requete paramétrée
    Par thiouwz2 dans le forum Bases de données
    Réponses: 7
    Dernier message: 05/11/2004, 15h02
  3. [delphi 7 / DOA] valeur null dans setvariable
    Par delphim dans le forum Bases de données
    Réponses: 1
    Dernier message: 05/11/2004, 10h14
  4. ASP et valeur NULL dans requêtes SQL
    Par chuck_m dans le forum ASP
    Réponses: 7
    Dernier message: 13/08/2004, 11h15
  5. Passer une valeur Null dans un argument de procédure
    Par preempalver dans le forum VBA Access
    Réponses: 5
    Dernier message: 30/12/2003, 20h52

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