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

Java Discussion :

J2EE Fonction Integer.parseInt(#code#)


Sujet :

Java

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Juillet 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2013
    Messages : 1
    Points : 2
    Points
    2
    Par défaut J2EE Fonction Integer.parseInt(#code#)
    Bonjour à tous et à toutes ^^
    Voila j'ai un soucis je devellope un porjet assez conséquent pour un service de coordination commerciale. Mais voila je rencontre un souci, via mes servlets je ne récupère aucune donnée de type entier... et on me retourne a chaque fois cette erreur :
    Etat HTTP 500 - null

    type Rapport d''exception

    message null

    description Le serveur a rencontré une erreur interne qui l''a empêché de satisfaire la requête.

    exception

    java.lang.NumberFormatException: null
    java.lang.Integer.parseInt(Unknown Source)
    java.lang.Integer.parseInt(Unknown Source)
    fr.gwenn.servlet.AjoutParam.doGet(AjoutParam.java:55)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    org.apache.catalina.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
    note La trace complète de la cause mère de cette erreur est disponible dans les fichiers journaux de Apache Tomcat/7.0.42.

    Apache Tomcat/7.0.42


    donc voila un exemple sur lequelle j'ai l'erreur : je dois créer un parametre composé d'une clé (le fameux int), d'une tranche (deux caracteres) d'une borne minimum et d'une borne maximum saisie par l'utilisateur. d'autre champs sont mis à zero. Donc voila la bean :
    package fr.gwenn.bean;

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    public class Parametre {
        private long           cle;
        private String         tranche;
        private int            borneMin;
        private int            borneMax;
        private int            indiceUtilisa;
        private boolean        actif;
        private ContexteClient cont;
        private double         pourcentage;
        /*
         * la nature est un champs avec une lettre spécifiant si c'est une tranche
         * pour les lots ou pour les codes spécifiques l = lot c = code spécifique
         * l'utilisateur n'a aucun contact avec cette données on la génère par le
         * bouton sélectionné au menu paramètre et il ne changera jamais (= pas de
         * possibilité de la modifier une fois créer)
         */
    
        private String         nature;
    
        public double getPourcentage() {
            return pourcentage;
        }
    
        public void setPourcentage() {
            double pour = this.indiceUtilisa * 100 / ( this.borneMax - this.borneMin );
            this.pourcentage = pour;
        }
    
        // ==========================================================
        public boolean isActif() {
            return actif;
        }
    
        public long getCle() {
            return cle;
        }
    
        public String getTranche() {
            return tranche;
        }
    
        public int getBorneMin() {
            return borneMin;
        }
    
        public int getBorneMax() {
            return borneMax;
        }
    
        public ContexteClient getCont() {
            return cont;
        }
    
        public int getIndiceUtilisa() {
            return indiceUtilisa;
        }
    
        public String getNature() {
            return this.nature;
        }
    
        // ==========================================================
    
        public void setActif( boolean actif ) {
            this.actif = actif;
        }
    
        public void setNature( String nature ) {
            this.nature = nature;
        }
    
        public void setCle( long cle ) {
            this.cle = cle;
        }
    
        public void setTranche( String tr ) {
            this.tranche = tr;
        }
    
        public void setBorneMin( int borne ) {
            this.borneMin = borne;
        }
    
        public void setBorneMax( int borne ) {
            this.borneMax = borne;
        }
    
        public void setIndiceUtilisa( int ind ) {
            this.indiceUtilisa = ind;
        }
    
        public void setCont( ContexteClient cont ) {
            this.cont = cont;
        }
    }
    
    Voici la jsp de création du paramètre (l'erreur apparaît apres) :
    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
    <%@ page pageEncoding="UTF-8" %>
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Lolita V2: Ajout Parametre</title>
    </head>
    <body>
    	
    	<h2> Ajout parametre <c:out value ="${nat}"/> </h2>
    	
    	<label name ="cle"><c:out value ="${cle}"/></label>
    	<label>Tranche : </label><input type="text" name ="tranche" maxlength= 2/><br/>
    	<label>Borne Min :</label><input type ="text" name ="borneMin" maxlength =3/><br/>
    	<label>Borne Max :</label><input type ="text" name ="borneMax" maxlength =3/><br/>
    	
    	<form method ="get" action="<c:url value="/ajoutPar"></c:url>">
    		<input type ="submit" value ="Creation"/>
    	</form>
    </body>
    </html>


    Voici ma servlet qui charge la page avec post (ce qui fonctionne très bien) et en retour par le GET ou l'erreur apparaît

    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    package fr.gwenn.servlet;
     
    import static fr.gwenn.tools.Utilitaire.getValeurChamp;
     
    import java.io.IOException;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;
     
    import fr.gwenn.bean.ContexteClient;
    import fr.gwenn.bean.Parametre;
    import fr.gwenn.dao.DAOFactory;
    import fr.gwenn.dao.DAOMapping;
    import fr.gwenn.dao.ParametreDao;
    import fr.gwenn.forms.ParamForm;
     
    public class AjoutParam extends HttpServlet {
        private static final long   serialVersionUID     = 1L;
     
        private static final String CONF_DAO_FACTORY     = "daofactory";
     
        private static final String ATT_SESSION_CONTEXTE = "contexte";
     
        private static final String ATT_CONTEXTE         = "contexte";
        private static final String ATT_NATURE           = "nature";
        private static final String ATT_BORNE_MAX        = "borneMax";
        private static final String ATT_BORNE_MIN        = "borneMin";
        private static final String ATT_CLE              = "cle";
        private static final String ATT_TRANCHE          = "tranche";
        private static final String VUE_FORM_CODE        = "/WEB-INF/parametreCode.jsp";
        private static final String VUE_FORM_LOT         = "/WEB-INF/parametreLot.jsp";
        private static final String VUE_FORM_CREA        = "/WEB-INF/ajoutPar.jsp";
        private ParametreDao        parametreDao;
        private DAOMapping          mapDAO;
     
        public void init() throws ServletException {
            this.parametreDao = ( (DAOFactory) getServletContext().getAttribute( CONF_DAO_FACTORY ) ).getParametreDao();
            this.mapDAO = ( (DAOFactory) getServletContext().getAttribute( CONF_DAO_FACTORY ) ).getDaoMapping();
     
        }
     
        protected void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException,
                IOException {
            Parametre param = null;
     
            HttpSession session = request.getSession();
            ContexteClient contexte = (ContexteClient) session.getAttribute( ATT_SESSION_CONTEXTE );
            ParamForm form = new ParamForm( parametreDao, mapDAO );
     
            String nat = getValeurChamp( request, ATT_NATURE );
            String tr = getValeurChamp( request, ATT_TRANCHE );
            int cle = Integer.parseInt( getValeurChamp( request, ATT_CLE ) );
            int borneMin = Integer.parseInt( getValeurChamp( request, ATT_BORNE_MIN ) );
            int borneMax = Integer.parseInt( getValeurChamp( request, ATT_BORNE_MAX ) );
     
            param.setCle( cle );
            param.setActif( false );
            param.setCont( contexte );
            param.setBorneMin( borneMin );
            param.setBorneMax( borneMax );
            param.setIndiceUtilisa( 0 );
            param.setNature( nat );
            param.setTranche( tr );
            param.setPourcentage();
     
            parametreDao.creer( param );
     
            System.out.println(
                    param.getCle() + ' ' +
                            param.getBorneMax() + ' ' +
                            param.getBorneMin() + ' ' +
                            param.getCont().getMarque().getCodeMarque() + ' ' );
     
            if ( nat == "c" ) {
                this.getServletContext().getRequestDispatcher( VUE_FORM_CODE ).forward( request, response );
            } else {
                this.getServletContext().getRequestDispatcher( VUE_FORM_LOT ).forward( request, response );
            }
     
        }
     
        protected void doPost( HttpServletRequest request, HttpServletResponse response ) throws ServletException,
                IOException {
            HttpSession session = request.getSession();
     
            ParamForm form = new ParamForm( parametreDao, mapDAO );
     
            String nat = getValeurChamp( request, ATT_NATURE );
            int cle = parametreDao.getCle();
     
            ContexteClient contexte = (ContexteClient) session.getAttribute( ATT_SESSION_CONTEXTE );
            request.setAttribute( ATT_CONTEXTE, contexte );
            request.setAttribute( ATT_NATURE, nat );
            request.setAttribute( ATT_CLE, cle );
            this.getServletContext().getRequestDispatcher( VUE_FORM_CREA ).forward( request, response );
     
        }
    }


    et voici ma DAO qui génere l'erreur lorsque je créée ma données
    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
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
    189
    190
    191
    192
    193
    194
    195
    196
    197
    198
    199
    200
    201
    202
    203
    204
    205
    206
    207
    208
    209
    210
    211
    212
    213
    214
    215
    216
    217
    218
    219
    220
    221
    222
    223
    224
    225
    226
    227
    228
    229
    230
    package fr.gwenn.dao;
    
    import static fr.gwenn.dao.DAOUtilitaire.fermeturesSilencieuses;
    import static fr.gwenn.dao.DAOUtilitaire.initialisationRequetePreparee;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    import java.util.List;
    
    import fr.gwenn.bean.ContexteClient;
    import fr.gwenn.bean.Parametre;
    
    public class ParametreDao extends DAOMapping {
    
        private static final String SQL_SELECT           = "SELECT cle, tranche, borneMin, borneMax, p.cPays, lpays, m.cMarque, lMarque, IndiceUtilisa, CodeType "
                                                                 +
                                                                 "FROM Parametre pa " +
                                                                 "LEFT OUTER JOIN PAYS p ON p.cPays = pa.cPays " +
                                                                 "LEFT OUTER JOIN MARQUE m ON m.cmarque = pa.cMarque " +
                                                                 "WHERE CodeType = ? " +
                                                                 "AND p.cPAYS = ? " +
                                                                 "AND m.cMarque = ? ;";
    
        private static final String SQL_INSERT           = "INSERT INTO Parametre " +
                                                                 "VALUES (?, ?, ?, ? ,?, ?, ?, false, ?)";
    
        private static final String SQL_UPDATE_ACTIVE    = "UPDATE PARAMETRE SET ACTIVE = 1 " +
                                                                 "WHERE cle =?;";
    
        private static final String SQL_UPDATE_DESACTIVE = "UPDATE PARAMETRE SET ACTIVE = 0 " +
                                                                 "WHERE cle =?;";
    
        private static final String SQL_UPDATE_INDICE    = "UPDATE PARAMETRE SET INDICEUTILISA = ? " +
                                                                 "WHERE cle = ?";
    
        private static final String SQL_SELECT_RECH      = "SELECT cle, Tranche, BorneMin, BorneMax, IndiceUtilisa, cNature "
                                                                 +
                                                                 "FROM Parametre " +
                                                                 "WHERE cle = ?";
    
        private static final String SQL_CLE              = "SELECT Count(Cle) AS newCle FROM Parametre";
    
        ParametreDao( DAOFactory daoFactory ) {
            super( daoFactory );
        }
    
        public void creer( Parametre para ) throws DAOException {
            Connection connexion = null;
            PreparedStatement preparedStatement = null;
            ResultSet valeursAutoGenerees = null;
    
            try {
                connexion = getDAOFactory().getConnection();
    
                preparedStatement = initialisationRequetePreparee( connexion, SQL_INSERT, true,
                        para.getCle(),
                        para.getTranche(),
                        para.getBorneMin(), para.getBorneMax(),
                        para.getIndiceUtilisa(),
                        para.getCont().getPays().getCodePays(),
                        para.getCont().getMarque().getCodeMarque(),
                        para.getNature() );
                int statut = preparedStatement.executeUpdate();
                if ( statut == 0 ) {
                    throw new DAOException( "échec de la création du Paramètre, aucune ligne ajoutée dans la table." );
                }
                System.out.println( "Cle " + para.getCle() + "Tranche " + para.getTranche() );
            } catch ( SQLException e ) {
                throw new DAOException( e );
            } finally {
                fermeturesSilencieuses( valeursAutoGenerees, preparedStatement, connexion );
            }
        }
    
        private void activer( Parametre param ) {
            Connection connexion = null;
            PreparedStatement preparedStatement = null;
            try {
                connexion = getDAOFactory().getConnection();
                preparedStatement = initialisationRequetePreparee( connexion, SQL_UPDATE_ACTIVE, false, param.getCle() );
    
                int statut = preparedStatement.executeUpdate();
                if ( statut == 0 ) {
                    throw new DAOException( "échec de la modification du Paramètre, aucune ligne modifiée dans la table." );
                }
            } catch ( SQLException e ) {
                throw new DAOException( e );
            } finally {
                fermeturesSilencieuses( preparedStatement, connexion );
            }
        }
    
        private void desactiver( Parametre param ) {
    
            Connection connexion = null;
            PreparedStatement preparedStatement = null;
            try {
                connexion = getDAOFactory().getConnection();
                preparedStatement = initialisationRequetePreparee( connexion, SQL_UPDATE_DESACTIVE, false, param.getCle() );
    
                int statut = preparedStatement.executeUpdate();
                if ( statut == 0 ) {
                    throw new DAOException( "échec de la modification du Paramètre, aucune ligne modifiée dans la table." );
                }
            } catch ( SQLException e ) {
                throw new DAOException( e );
            } finally {
                fermeturesSilencieuses( preparedStatement, connexion );
            }
    
        }
    
        public List<Parametre> lister( char type, ContexteClient contexte ) throws DAOException {
            Connection connexion = null;
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
            List<Parametre> listePara = new ArrayList<Parametre>();
    
            String typeL = Character.toString( type );
    
            try {
                connexion = getDAOFactory().getConnection();
                preparedStatement = initialisationRequetePreparee( connexion, SQL_SELECT, true, typeL, contexte.getPays()
                        .getCodePays(), contexte
                        .getMarque().getCodeMarque() );
                resultSet = preparedStatement.executeQuery();
                while ( resultSet.next() ) {
                    listePara.add( mapParametre( resultSet ) );
                }
            } catch ( SQLException e ) {
                throw new DAOException( e );
            } finally {
                fermeturesSilencieuses( resultSet, preparedStatement, connexion );
            }
    
            return listePara;
        }
    
        public Parametre getParam( char nature, ContexteClient contexte ) throws DAOException {
            Parametre param = new Parametre();
            List<Parametre> listePara = lister( nature, contexte );
            int i = 0;
            if ( !listePara.isEmpty() ) {
                while ( param.getTranche() == null ) {
                    if ( listePara.get( i ).isActif() ) {
                        param = listePara.get( i );
                        if ( param.getBorneMax() == param.getIndiceUtilisa() ) {
                            this.desactiver( param );
                            param = listePara.get( i + 1 );
                            this.activer( param );
                        }
                    }
                    i++;
                }
            }
            return param;
        }
    
        public Parametre trouver( long id ) throws DAOException {
            return retournerParam( id );
        }
    
        public void updateIndice( Parametre param, int nb ) {
            Connection connexion = null;
            PreparedStatement preparedStatement = null;
            try {
                connexion = getDAOFactory().getConnection();
                preparedStatement = initialisationRequetePreparee( connexion, SQL_UPDATE_INDICE, false, nb, param.getCle() );
    
                int statut = preparedStatement.executeUpdate();
                if ( statut == 0 ) {
                    throw new DAOException( "échec de la modification du Paramètre, aucune ligne modifiée dans la table." );
                }
            } catch ( SQLException e ) {
                throw new DAOException( e );
            } finally {
                fermeturesSilencieuses( preparedStatement, connexion );
            }
        }
    
        public Parametre retournerParam( Long cParam ) throws DAOException {
            Connection connexion = null;
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
            Parametre param = null;
    
            try {
                // Récupération d'une connexion depuis la Factory
                connexion = getDAOFactory().getConnection();
                // Préparation de la requête avec les objets passés en arguments
                // (ici, uniquement un id) et exécution.
                preparedStatement = initialisationRequetePreparee( connexion, SQL_SELECT_RECH, false, cParam );
                resultSet = preparedStatement.executeQuery();
                // Parcours de la ligne de données retournée dans le ResultSet
                if ( resultSet.next() ) {
                    param = mapParametre( resultSet );
                }
            } catch ( SQLException e ) {
                throw new DAOException( e );
            } finally {
                fermeturesSilencieuses( resultSet, preparedStatement, connexion );
            }
            return param;
        }
    
        public int getCle() throws DAOException {
            int cle = 0;
            Connection connexion = null;
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
    
            try {
                connexion = getDAOFactory().getConnection();
                preparedStatement = connexion.prepareStatement( SQL_CLE );
                resultSet = preparedStatement.executeQuery();
                while ( resultSet.next() ) {
                    cle = resultSet.getInt( "newCle" ) + 1;
                }
            } catch ( SQLException e ) {
                throw new DAOException( e );
            } finally {
                fermeturesSilencieuses( resultSet, preparedStatement, connexion );
            }
            return cle;
        }
    }
    

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Bonjour,

    L'erreur vient de ces lignes là :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            int cle = Integer.parseInt( getValeurChamp( request, ATT_CLE ) );
            int borneMin = Integer.parseInt( getValeurChamp( request, ATT_BORNE_MIN ) );
            int borneMax = Integer.parseInt( getValeurChamp( request, ATT_BORNE_MAX ) );
    Un ou plusieurs champ n'a pas été renseigné dans le formulaire, du coup getValeurChamp te renvoie null et Integer.parseInt ne sait pas parser une variable null. Vérifie d'abord que le retour de getValeurChamp n'est pas null et ensuite applique Integer.parseInt(). Tu peux même te creer une nouvelle méthode utile getValeurChampEntier qui encapsule tout ça.

    Romain.

Discussions similaires

  1. Appel fonction php dans code javascript
    Par licorne dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/03/2008, 10h55
  2. Transcrire une fonction mathématique en code Matlab
    Par casper84 dans le forum MATLAB
    Réponses: 1
    Dernier message: 30/03/2007, 17h04
  3. [Système] Fonction eval mal codée
    Par Dsphinx dans le forum Langage
    Réponses: 20
    Dernier message: 08/02/2007, 07h28
  4. Réponses: 4
    Dernier message: 09/08/2006, 15h14
  5. fonction redonnant le code ascii d'un entier ???
    Par abignon dans le forum MFC
    Réponses: 4
    Dernier message: 29/01/2004, 12h32

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