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 :

Tester un attribut servlet


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Points : 30
    Points
    30
    Par défaut Tester un attribut servlet
    Bonjour je besoin d'aide pour un code je veux quand je modifier les attributs de la classe fournisseur tester si le nom existe déjà voici le code que j'ai utilisé :
    if (action.equals("edit")) {// edit Fournisseur
    Session session = HibernateUtil.currentSession();
    session.beginTransaction();
    String nom;
    nom=request.getParameter("nom");
    String hql = "from Fournisseur F where F.nom='"+ nom + "'";
    //String hql = "from Fournisseur F where F.nom='"+ nom + "' limite 1";
    Query query = session.createQuery(hql);
    Fournisseur user = (Fournisseur) query.setMaxResults(1);
    session.getTransaction().commit();

    if (id_fournisseur != null) {
    Fournisseur fournisseur = (Fournisseur) sessionDb.load(Fournisseur.class, id_fournisseur);
    try {
    fournisseur.setNom(request.getParameter("nom"));
    fournisseur.setPays(request.getParameter("pays"));
    fournisseur.setVille(request.getParameter("ville"));
    fournisseur.setAdresse(request.getParameter("adresse"));
    fournisseur.setTelephone(request.getParameter("telephone"));
    fournisseur.setMail(request.getParameter("mail"));
    fournisseur.setFax(request.getParameter("fax"));


    sessionDb.update(fournisseur);
    sessionDb.flush();
    sessionDb.connection().commit();
    sessionDb.close();
    } catch (HibernateException e) {
    e.printStackTrace();

    } catch (SQLException e) {

    e.printStackTrace();
    }
    response.sendRedirect("fournisseurs?op=index&id="+fournisseur.getId());
    }

  2. #2
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonjour

    Quel est le problème exactement ? ou l'erreur ?
    Est-ce que la mise à jour ne se fait pas ?

    Juste quelques remarques::
    1)
    Avant de construire la string hql,il faut peut être s'assurer que la variable nom n'est pas vide ou null
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String nom;
    nom=request.getParameter("nom");
    String hql = "from Fournisseur F where F.nom='"+ nom + "'";
    2)

    Dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Fournisseur user = (Fournisseur) query.setMaxResults(1);
    session.getTransaction().commit();
    je pense que le commit ne sert à rien puisque que c'est un select

    3) d'où vient le

    4) et enfin est-ce que tu es sûr qu'il est n'est pas null et que tu rentres dans ta condition

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if (id_fournisseur !=null){
    //
    }

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Points : 30
    Points
    30
    Par défaut
    salut merci ISMA j'ai trouvé la solution, j'ai ajouté unique key dans la table furnisseur et dans ma requête j'ai ajouté l'id de fournisseur comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String hql = "from Fournisseur F where F.nom='"+ nom + "'and F.id !='"+ id_fournisseur + "'";

  4. #4
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Tant mieux! mais ça ne doit pas t'empêcher de prendre en compte les remarques (tester si le nom est null ou pas etc ....)
    n'oublies pas le tag résolu

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Points : 30
    Points
    30
    Par défaut
    salut pour répondre à vos questions le problème que j'ai c'est que je ne peut pas modifier seulement un champs d'un fournisseur il se croit que ce fournisseur existe donc il ne faut pas modifier leurs champs.

    1)j'ai pas fais ce test car c'est obligatoirement de remplir le champ nom.

    2)j'ai pas fais attention en tous cas j'ai changé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    query.setMaxResults(1);
    PAR 3)le id_fournisseur vient de ma table fournisseur c'est l'id
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
    			id_fournisseur = Integer.parseInt(request.getParameter("id"));
    		} catch (NumberFormatException e) {
    			System.out.println(e);
    		}
    4)oui dans ma table fournisseur j'exige que l'id ne doit pas être null c'est un clé primaire.

    j'espère que j'ai bien expliquer et j'ai bien répondu à vos questions. merci de vos remarques.

  6. #6
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Juste une question : comment vous avez fait pour avoir rendu le champs nom obligatoire ?

  7. #7
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Points : 30
    Points
    30
    Par défaut
    j'utilise le javascript comme suit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function validate(){
    var reference=document.pdt.reference;
    if ((reference.value==null)||(reference.value=="")){
    alert("Entrer un référence");
    reference.focus();
    return false;
    }
    }

  8. #8
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Ok mais ça ne suffit pas !
    Il faut toujours faire deux validations :
    La première est à faire côté client avec le Javascript (=> C'est ce que tu as fait)
    Par contre il faut faire une deuxième validation côté serveur ! Tu peux le faire soit dans ta servlet dans une méthode private, soit dans une classe utilitaire

    Tu vas me dire pourquoi il faut le faire des deux côtés (client et serveur) : voici deux bonnes raisons :

    - la première est que dans ton navigateur tu peux désactiver le Javascript ( et contrairement à ce qu'on peut penser ,c'est quelque chose qui arrive)
    - la deuxième est que même sir ton javascript est activé une personne malintentionnée peut faire de l'injection javascript

    voilà bon courage
    et n'oublies pas de mettre le tag résolu pour les autres

  9. #9
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Points : 30
    Points
    30
    Par défaut
    merci j'ai essayé de le faire dans ma servlet voici ce que j'ai mis mais je ne pense pas que c'est un bon code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    String reference,designation,taille;
    			reference=request.getParameter("reference");
    			designation=request.getParameter("designation");
    			taille=request.getParameter("taille");
     
    			if(reference.equals("")||designation.equals("")||taille.equals(""))
    			{
    				response.sendRedirect("produits?op=new&id="+produit.getId());
    			}
    juste une question j'ai pas compris cette phrase une personne malintentionnée peut faire de l'injection javascript
    comment il peut faire l'injection du javascript.

  10. #10
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    1) n'oublies pas de tester le cas null et pas que la chaine vide
    2) et si c'est vide ou null par exemple tu mets un message d'erreur dans ta request

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.setAttribute("error_message","Le nom n'est pas renseigné");
    et dans ta JSP tu affiches le message d'erreur si il en a un

    3) pour l'injection javascript il y a plein d'exemple sur le net et les moyens de contourner .mais un exemple simple est que à la place du nom la personne met le code javascript alert('tata');
    A chaque fois que tu affiches ta page ton javascript alert va s'afficher

    et l'autre injection est SQL
    Imagines que à la place du nom la personne entre dans le champs


  11. #11
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Points : 30
    Points
    30
    Par défaut
    merci infiniment ok je vais essayer, pour la jsp je mets ce code pour récupérer le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <p style="background-color: red; padding: 5px;">
    <B><I><FONT COLOR="#0000FF"><%=request.getAttribute("message")%></FONT></I></B>
    </p>
    mais le problème que j'ai c'est que ce message s'affiche toujours dans la page jsp et une autre chose si je veux tester 10 champs par exemple si ils sont vides ou bien de les tester si ils sont numérique, comment je peut le faire? merci

  12. #12
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Plusieurs choses

    tu devrais faire un message d'erreur pour chaque champs
    Ensuite tu mets tout ça dans une liste par exemple..

    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
     
    List<String> listError = new ArrayList<String>();
    String nom = request.getParameter("nom");
    String telephone = request.getParameter("telephone");
     
    if (null == nom ||"".equals(nom)){
    listError.add("Veuillez renseigner le nom"); //ou autre message 
    } 
     
    //et tu fais ça pour chaque champs
    //je te conseille de faire ça dans une méthode private qui prend en //paramètre ta requête et qui renvois une liste de string
    if (listError.size()>0){
    request.setAttribute("error_messages",listError);
    // + forward vers ta JSP
    }else{
    //autres traitements : 
    }
    Pour les entiers, ou autre champs avec un format, il n'y a pas mieux que les expressions régulières.Mais pour ça il faut tout un chapitre
    Il y a plein de tutoriels à ce sujet ...

    Dans ta JSP en taglib ou en scriplets (ou autres)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <%if (request.getAttribute("error_messages") != null){
    for(String mess : ((List<String>)request.getAttribute("error_messages") ){
    <p style="background-color: red; padding: 5px;">
    <B><I><FONT COLOR="#0000FF"><%=mess %></FONT></I></B>
    </p>
    }
    %>
     
     
    <%}%>
    A peu de chose près ça peut ressembler à ça
    Si tu veux n'hésites pas à utiliser les tagslibs à la place des scriplets, c'est mieux

  13. #13
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Points : 30
    Points
    30
    Par défaut
    merci infiniment je vais tester ça.

  14. #14
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Points : 30
    Points
    30
    Par défaut
    merci ISMA je suis intéressé d'utiliser les tagLibs mais je ne sais pas comment faire pourriez vous me diriger?

  15. #15
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Est-ce que tu as résolu ton problème sans taglib ?

    sinon pour les taglib, il y a plein de tutoriel, notamment sur ce site
    On ne peut pas expliquer ça en un post

  16. #16
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Points : 30
    Points
    30
    Par défaut
    bonjour merci isma j'ai testé ce que vous m'avez proposer sans utilisé les TagLibs mais quand je mets ce code dans ma jsp j'ai un erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <%if (request.getAttribute("error_messages") != null){
    for(String mess : ((List<String>)request.getAttribute("error_messages") )){
    	<p style="background-color: red; padding: 5px;">
    
    	<B><I><FONT COLOR="#0000FF"><%=mess %></FONT></I></B>
    </p>
    }
    %>
    
    <%}%>
    il ne comprend pas ce que j'ai mis en rouge.

  17. #17
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Points : 30
    Points
    30
    Par défaut
    j'ai trouvé une solution voici le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <h1>Nouveau Patient</h1>
    <%if (request.getAttribute("error_messages") != null){
    for(String mess : ((List<String>)request.getAttribute("error_messages") )){
    %>
    <p style="background-color: red; padding: 5px;"><B><I><FONT
    	COLOR="#0000FF"><%=mess %></FONT></I></B></p>
    <%
    }
    %> <%
    }
    %>
    le problème que j'ai maintenant c'est que je veux pas afficher le message dés le lancement de la page je veux le cacher et dés que je clique sur ajouter et le champ n'est pas rempli le message s'affiche .
    j'espère que j'ai bien exprimé mon besoin merci

  18. #18
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Bonjour

    la partie d'erreur dans la JSP ne s'affiche que lorsqu'il y a des erreurs,
    car les erreurs sont stockés dans la request. Et c'est la servlet qui se charge de mettre la liste d'erreur dans la request

    La cinématique est la suivante :
    Servlet d'affichage du formulaire => renvoi vers la page => submit du formulaire => récupérations des données dans la servlet => traitements sur les données

    Si dans la servlet tu ne mets pas ta liste de message dans ta request elle ne s'affiche pas

    Qu'est ce que tu as comme affichage actuellement ?

  19. #19
    Nouveau membre du Club
    Inscrit en
    Janvier 2011
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Janvier 2011
    Messages : 114
    Points : 30
    Points
    30
    Par défaut
    merci infiniment,quand je lance ma page jsp le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Veuillez renseigner le nom
    s'affiche . regardez la pièce jointe s'il vous plaît

  20. #20
    Membre éprouvé Avatar de noOneIsInnocent
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 037
    Points : 1 161
    Points
    1 161
    Par défaut
    Le problème doit sûrement venir de la servlet où le traitement des erreurs doit être mal placé
    Est-ce que tu peux poster le code de la servlet stp ?

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [XSLT 1.0] Comment tester un attribut dans un for-each?
    Par CBresso dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 23/09/2011, 16h58
  2. [AC-2003] Tester les attributs d'une relation ?
    Par marot_r dans le forum VBA Access
    Réponses: 2
    Dernier message: 30/03/2010, 22h01
  3. Tester existence Attribut xml
    Par inspecteur rick dans le forum Débuter
    Réponses: 2
    Dernier message: 23/12/2009, 15h43
  4. tester les attributs
    Par bubu87 dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 03/07/2009, 15h30
  5. Tester un attribut ou methode cross-browser
    Par andry.aime dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 26/03/2009, 09h23

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