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

Servlets/JSP Java Discussion :

[JSP / Servlet] setAttribut java.lang.nullpointerexception


Sujet :

Servlets/JSP Java

  1. #1
    Invité
    Invité(e)
    Par défaut [JSP / Servlet] setAttribut java.lang.nullpointerexception
    salut,
    j'ai rencontré un probleme en essayant de creer un attribut contenant l'id de l'element selectionner dans une liste au niveau de ma jsp
    puis le passer a ma servlet..
    merci de votre aide

    JSP:
    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
    <form method="post" action="<c:url value="/creationCommandeExped"/>">
    			<fieldset>
    				<legend>Création d'une commande</legend>
    				<fieldset>
    					<legend>Informations client</legend>
    					<%-- Si et seulement si la liste des clients  n'est	pas vide, alors on propose un choix à l'utilisateur --%>
     
    					<c:if test="${ !empty clientService.findAll() }">
    						<label for="choixNouveauClient">Nouveau client ? <span	class="requis">*</span></label>
    						<input type="radio" id="choixNouveauClient"	name="choixNouveauClient" value="nouveauClient" checked /> Oui
    						<input type="radio" id="choixNouveauClient"	name="choixNouveauClient" value="ancienClient" /> Non	<br/><br />
    					</c:if>
    					<c:set var="idClt"  value="${ clients.idClient }" scope="request" />
    					<div id="nouveauClient">
    						<c:import url="/creerClient.jsp" />
    					</div>
    					<%-- Si et seulement si la liste des clients  n'est	pas vide, alors on crée la liste déroulante --%>
     
    					<c:if test="${ !empty clientService.findAll() }">
    						<div id="ancienClient">
    							<select name="listeClients" id="listeClients">
    								<option value="" disabled selected>Choisissez un client...</option>
    								<%-- Boucle sur la map des clients --%>
    								<c:forEach items="${ clientService.findAll() }" var="clients">									
    									<option value="${ clients.idClient }">${clients.nom } ${ clients.prenom }</option>
    									<c:set var="idClt"  value="${ clients.idClient }" scope="request" />
    								</c:forEach>
    							</select>						
    						</div>
    					</c:if>
     
    			</fieldset><input class="bouton" type="submit" value="Valider" /> <input class="bouton" type="reset"	value="Remettre à zéro" /> <br />
    		</form>
    servlet methode doPost :

    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
    public void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException
        {
            CommandeExpedService ces = new CommandeExpedService();
            ClientService cs = new ClientService();
            // objet de gestion de creation de commande d'expedition
            CreationCommandeExpedGst cceg = new CreationCommandeExpedGst();
            // traitement de la requete et recuperation de la commande
            CommandeExped commandeExped = cceg.creerCommande( request );
     
            /* Ajout du bean et de l'objet métier à l'objet requête */
            request.setAttribute( ATT_COMMANDE, commandeExped );
            request.setAttribute( ATT_COMMGST, cceg );
     
            // Si aucune erreur
            if ( cceg.getErreurs().isEmpty() ) {
                cs.create( commandeExped.getClient() );
                ces.create( commandeExped );
                this.getServletContext().getRequestDispatcher( VUE_SUCCES ).forward( request, response );
            } else {
                this.getServletContext().getRequestDispatcher( VUE_FORM ).forward( request, response );
            }
     
        }
    la classe CreationCommandeExpedGst appelé dans ma servlet:

    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
    public class CreationCommandeExpedGst {
        private static final String CHAMP_CHOIX_CLIENT    = "choixNouveauClient";
     
        private static final String FORMAT_DATE           = "dd/MM/yyyy HH:mm:ss";
        private static final String ANCIEN_CLIENT         = "ancienClient";
        private static final String CHAMP_QUANTITE        = "quantite";
        private static final String CHAMP_CHOIX_LIVRAISON = "choixLivraison";
        private static final String CHAMP_DATEEXPED       = "dateExped";
     
        private String              resultat;
        private Map<String, String> erreurs               = new HashMap<String, String>();
     
        public Map<String, String> getErreurs() {
            return erreurs;
        }
     
        public String getResultat() {
            return resultat;
        }
     
        public CommandeExped creerCommande( HttpServletRequest request ) {
            Client client;
            Produit produit;
            ClientService cs = new ClientService();
            ProduitService ps = new ProduitService();
            // Si l'utilisateur choisit un client déjà existant, pas de validation à
            // effectuer
            String choixNouveauClient = getValeurChamp( request, CHAMP_CHOIX_CLIENT );
            if ( ANCIEN_CLIENT.equals( choixNouveauClient ) ) {
                /* Récupération du nom du client choisi */
     
                int id = (Integer) request.getAttribute( "idClt" );
     
                client = cs.findById( id );
            } else {
                /*
                 * Sinon on garde l'ancien mode, pour la validation des champs.
                 */
                CreationClientGst clientGst = new CreationClientGst();
                client = clientGst.creerClient( request );
                /*
                 * récupérer le contenu de la map d'erreur créée par l'objet métier
                 * CreationClientGst dans la map d'erreurs courante, actuellement
                 * vide.
                 */
                erreurs = clientGst.getErreurs();
            }
    ...
    ...
    ...}
    l'erreur est levé au niveau de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int id = (Integer) request.getAttribute( "idClt" );
    merci encore..

  2. #2
    Membre chevronné Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Points : 2 120
    Points
    2 120
    Par défaut
    Salut,
    peux-tu nous donner la trace complete.

    Eric

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Ta servlet ne transmet pas l'attribut "idClt", du coup, ça ne peut pas fonctionner
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par jeffray03 Voir le message
    Salut,
    peux-tu nous donner la trace complete.

    Eric
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    java.lang.NullPointerException
    	com.project.gestionBeans.CreationCommandeExpedGst.creerCommande(CreationCommandeExpedGst.java:49)
    	com.project.servlets.CreationCommandeExped.doPost(CreationCommandeExped.java:35)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
    	javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
    	org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
    	org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par OButterlin Voir le message
    Ta servlet ne transmet pas l'attribut "idClt", du coup, ça ne peut pas fonctionner
    comment resoudre ce probleme ? (puisqu'elle transmet les autres parametres)

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

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 310
    Points : 9 522
    Points
    9 522
    Billets dans le blog
    1
    Par défaut
    Avant l'appel de ta méthode creerCommande, il faut enregistrer l'id dans le request
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.setAttribute("idClt", ???);
    Les autres valeurs sont (je suppose) directement récupérées par request.getParameter(...) dans ta fonction getValeurChamp(...)
    Il ne faut pas confondre request.getParameter() qui prend les données de la page ou de l'url et request.getAttribute() qui vient forcément d'une servlet
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Invité
    Invité(e)
    Par défaut
    Merci de vos réponses. .
    J ai resolu le problème en utilisant des paramètres au lieu d attributs. .

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

Discussions similaires

  1. Servlet et java.lang.NullPointerException
    Par stux001 dans le forum Servlets/JSP
    Réponses: 20
    Dernier message: 02/03/2012, 05h19
  2. EJB3 Servlet java.lang.NullPointerException
    Par sebnolist dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 25/01/2011, 22h32
  3. java.lang.NullPointerException lors de l'exécution de la servlet
    Par fahmi.bedoui dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 07/01/2011, 12h09
  4. Servlet et java.lang.NullPointerException
    Par momjunior dans le forum Servlets/JSP
    Réponses: 0
    Dernier message: 07/05/2010, 20h58
  5. [CR] [JSP] java.lang.NullPointerException
    Par abdess6600 dans le forum SDK
    Réponses: 1
    Dernier message: 21/09/2006, 12h25

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