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 :

[Debutant] Donn�es nulles de JSP vers Servlet method Post


Sujet :

Servlets/JSP Java

  1. #1
    Membre �clair�
    Homme Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    Mars 2005
    Messages
    363
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux
    Secteur : Administration - Collectivit� locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Par d�faut [Debutant] Donn�es nulles de JSP vers Servlet method Post
    Bonjour,

    je poursuis ma d�couverte de ces nouvelles technos avec une nouvelle question. Je dispose d'une page FicheAbonne.jsp qui correspond � remplir diff�rents champs pour un abonn� (nom, prenom ...). Cette page contient un bouton de sauvegarde des informations dont certaines ne doivent pas �tre vides. Quand les informations sont correctement renseign�es, l'enregistrement est bien pris en compte (je ne fais pour le moment que de la modification d'enregistrement). En revanche, quand un champ est non rempli (par exemple le nom), la page est r�affich�e (par ma servlet) mais des champs ont maintenant la valeur null (les champs en disabled) ou les checkbox se d�cochent. Je vous mets ci-dessous ma servlet et ma page JSP.
    Si l'un d'entre vous a une id�e ou une question, n'h�sitez pas.

    Merci d'avance


    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
    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
    package servlet;
     
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.Vector;
     
    import hibernate.*;
    import hibernateMain.HibernateUtil;
     
    import org.hibernate.Query;
    import org.hibernate.Session;
    import org.hibernate.Transaction;
     
    import java.util.List;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.swing.JOptionPane;
     
    public class ServletAbonne extends HttpServlet {
     
    	 /**
    		 * 
    		 */
    		private static final long serialVersionUID = -559546873832531359L;
    		// paramètres d'instance
     
     
    		public static Vector<Abonne> v;		
    		public static Session session;
     
    		//	init
    		public void init() {
     
    			 session = HibernateUtil.currentSession();		 
    			 Query myQuery = session.createQuery("From Abonne");
    	         List result = myQuery.list();	       
    	         v = new Vector<Abonne>();	        
    			 for (Iterator it = result.iterator(); it.hasNext();) {					
    				 v.addElement((Abonne) it.next());					 
    			 }								
     
    		}
     
     
    		//GET
    		/*public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException,ServletException {
     
    		}*/
     
    		/**
    		 * 	@param request la requête HTTP du client
    		 *	@param response la réponse HTTP qu'on va construire
    		*/
    		public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
    			// 	on passe la main au GET
    			//doGet(request, response);
    			String id = request.getParameter("txtId");
    			String nom = request.getParameter("txtNom");
    			String prenom = request.getParameter("txtPrenom");
    			String pwd = request.getParameter("txtPwd");
    			String user = request.getParameter("txtUser");
    			String telephone = request.getParameter("txtTelephone");
    			String mail = request.getParameter("txtMail");
    			String competences = request.getParameter("txtCompetences");
    			String actif= request.getParameter("ckActif");
    			String admin= request.getParameter("ckAdmin");
    			String datecreation= request.getParameter("txtDateCreation");
     
    			if (!(nom.equals("")) && !(prenom.equals("")) && !(pwd.equals("")) && !(user.equals(""))) {
    				// Message de confirmation de la sauvegarde
     
    				Transaction tx = session.beginTransaction();
     
    				Abonne abonne = (Abonne) session.load(Abonne.class, new Integer(id));
     
    				abonne.setAbonneUser(user);
    				abonne.setAbonnePwd(pwd);
    				abonne.setAbonneNom(nom);
    				abonne.setAbonnePrenom(prenom);
    				abonne.setAbonneTelephone(telephone);
    				abonne.setAbonneMail(mail);
    				abonne.setAbonneCompetences(competences);
    				abonne.setAbonneMail(admin);
    				abonne.setAbonneCompetences(actif);
    				abonne.setAbonneMail(mail);
    				abonne.setAbonneCompetences(competences);
    				session.save(abonne);
     
    				tx.commit();
     
    				//JOptionPane.showMessageDialog(null,"Abonné enregistré !");				
    				System.out.println("L'abonné est bien enregistré");
    				getServletContext().getRequestDispatcher("/JSP/Abonne.jsp").forward(request,response);
     
    			} else {
    				// Message d'erreur : Abonné non sauvegardé
    				System.out.println("Veuillez remplir les champs User, Password, Nom et Prenom !");				
    				getServletContext().getRequestDispatcher("/JSP/FicheAbonne.jsp").forward(request,response);
    			}
     
    		}
     
    }

    Ma page FicheAbonne.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
    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
    <%@ page language="Java" %>
    <%
    // on récupère les données nom, age et urlRetour nécessaire à l'affichage de la page
    String id=(String)request.getParameter("txtId");
    String user=(String)request.getParameter("txtUser");
    String pwd=(String)request.getParameter("txtPwd");
    String nom=(String)request.getParameter("txtNom");
    String prenom=(String)request.getParameter("txtPrenom");
    String telephone=(String)request.getParameter("txtTelephone");
    String mail=(String)request.getParameter("txtMail");
    String competences=(String)request.getParameter("txtCompetences");
    String actif=(String)request.getParameter("ckActif");
    String admin=(String)request.getParameter("ckAdmin");
    String datecreation=(String)request.getParameter("txtDateCreation");
    System.out.println(datecreation+"    "+admin);
     
    %>
    <html>
    <head>
    <title>Fiche de l'abonné</title>
    <LINK REL="StyleSheet" HREF="./../CSS/styles.css" TYPE="text/css">
    </head>
    <body>
    <% 
                    String repass = request.getParameter("alreadypassed");
    %>
    <%
                    if (repass != null) {
                            out.print ("<p align=\"center\">Veuillez remplir les champs User, Password, Nom et Prenom !</p>");      
                    }
    %>
     
    <center>
    <h2>Fiche de l'abonné</h2>
    <hr>
    <form action="<%=request.getContextPath()+"/ServletAbonne"%>" method="post">
    <table>
    <tr>
    	<td>User*</td>
    		<td><input name="txtUser" value="<%=user%>" type="text" size="20"></td>
    	</tr>
    	<tr>
    	<td>Password*</td>
    		<td><input name="txtPwd" value="<%=pwd%>" type="password" size="20"></td>
    	</tr>
    	<tr>
    		<td>Nom*</td>
    		<td><input name="txtNom" value="<%=nom%>" type="text" size="20"></td>
    	</tr>
    	<tr>
    		<td>Prenom*</td>
    		<td><input name="txtPrenom" value="<%=prenom%>" type="text" size="20"></td>
    	</tr>
    	<tr>
    		<td>Telephone</td>
    		<td><input name="txtTelephone" value="<%=telephone%>" type="text" size="10"></td>
    	</tr>
    	<tr>
    		<td>Mail</td>
    		<td><input name="txtMail" value="<%=mail%>" type="text" size="60"></td>
    	</tr>
    	<tr>
    		<td>Competences</td>
    		<td><input name="txtCompetences" value="<%=competences%>" type="text" size="100"></td>
    	</tr>
    	<tr>
    		<td>
    		<%if (admin.equals("1")) { %>
    			<input type="checkbox" name="ckAdmin" checked="checked">Admin ?
    		<% } else { %>
    			<input type="checkbox" name="ckAdmin">Admin ?
    		<% } %>
    		</td>
    	</tr>
    	<tr>
    		<td>
    		<%if (actif.equals("1")) { %>
    			<input type="checkbox" name="ckActif" checked="checked">Actif ?
    		<% } else { %>
    			<input type="checkbox" name="ckActif">Actif ?
    		<% } %>
    		</td>
    	</tr>
    	<tr>
    		<td>Date de création</td>
    		<td><input name="txtDateCreation" value="<%=datecreation%>" type="text" size="10" ></td>
    	</tr>
    	<tr></tr>
    	<tr>
    		<td>* Champs obligatoires</td>		
    	</tr>
    </table>
    <table>
    	<tr>
    		<td><input type="hidden" value="<%=id %>" name="txtId"></td>
    		<td><input type="hidden" value="0" name="alreadypassed"></td>
    		<td><input type="submit" value="Sauvegarder l'abonné"></td>
    	</tr>
    </table>
    </form>
    </center>
    </body>
    </html>

  2. #2
    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
    Alors, il est tout � fait normal que tes propri�t�s aient la valeur null.

    En simplifiant, request c'est de ta page vers le serveur, response, de ton serveur vers ta page.
    Si tu fais un request.getParameter, tu recherches dans la demande "entrante" un param�tre. Le probl�me dans ton cas, c'est que tu es dans un retour, donc getParameter ne trouve plus les param�tres.
    Il faudrait d�j� que dans ta servlet tu fasses request.setAttribute et que dans ta page, request.getAttribute ou session.setAttribute et session.getAttribute (un peu mieux, si tu reviens dans ta page, tu retrouves les donn�es)...
    Mais bon, ce n'est pas la bonne m�thode.
    Il serait pr�f�rable de passer par un bean pour stocker les informations et de passer le bean � la page (via request ou session)
    Dans ta page, tu d�finis le bean, et tu acc�des aux propri�t�s via les getter/setter

    Je te sugg�re de jeter un oeil du cot� de struts qui simplifie ce genre de chose...

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre �clair�
    Homme Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    Mars 2005
    Messages
    363
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux
    Secteur : Administration - Collectivit� locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Par d�faut
    merci pour ta r�ponse mais je ne dois pas utiliser les struts. Je trouve bizarre qu'en disabled il me renvoie null alors qu'en enabled il me renvoie la valeur. Dans mon exemple, si � l'arriv�e sur la page tous les champs sont remplis et qu'ils sont tous en enabled (je ne parle pas des checkbox) et que je clique sur le bouton toutes les valeurs des champs sont correctement envoy�s vers ma Servlet et si le champ Prenom est vide par exemple, toutes les infos sont �galement envoy�es. En revanche si un des champs est disabled alors sa valeur ne sera pas envoy�e � la servlet (par le request) tout comme mes checkbox. Mon souci vient pour le moment du request pas du response. Quand je r�cup�re ces champs (disabled) ils sont vides dans mon request.getParameter("champ"); alors que les autres (enabled) sont corrects !!!

    Merci.

  4. #4
    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
    C'est normal, un champ disable n'est pas envoy�.
    Il faudrait utiliser readonly si tu veux prot�ger contre la saisie/modification et envoyer les donn�es.

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre �clair�
    Homme Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    Mars 2005
    Messages
    363
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux
    Secteur : Administration - Collectivit� locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Par d�faut
    Merci beaucoup pour le readonly �a fonctionne nickel. Par contre, pour les checkbox, je n'ai toujours pas la solution. La valeur est modifi�e dans le request. Si la case est coch�e ((String)ckAdmin = 1), au premier clic, la case est d�coch�e (ckAdmin = on ???) et au second clic une Exception est lev&�e (valeur nulle).

  6. #6
    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
    D�sol� du retard...

    Les checkbox sont p�nibles de ce point de vue : elles ne renvoient de donn�es que si elles sont coch�es...
    Donc, dans ton traitement (en supposant que les valeurs possibles soient "0" et "1"), il faut tester un truc du style :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    String valeurCB = request.getParameter("nomCB");
    if ( valeurCB == null ) valeurCB == "0";
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  7. #7
    Membre �clair�
    Homme Profil pro
    Ing�nieur syst�mes et r�seaux
    Inscrit en
    Mars 2005
    Messages
    363
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Ing�nieur syst�mes et r�seaux
    Secteur : Administration - Collectivit� locale

    Informations forums :
    Inscription : Mars 2005
    Messages : 363
    Par d�faut
    Merci, c'est ce que j'ai fait au final, je ne m'emb�te plus avec les value. Je fais fais un truc du genre (admin �tant une variable rep�sentant l'�tat de ma checkbox, on pour checked et null pour unchecked) :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (admin != null) {
    							if (admin.equals("on")) {							
    							//	abonne.setAbonneAdmin(Byte.parseByte(admin));
    								abonne.setAbonneAdmin(Byte.parseByte(String.valueOf(1)));
    							} else {
    								abonne.setAbonneAdmin(Byte.parseByte(String.valueOf(0)));
    							}
    						} else {
    							abonne.setAbonneAdmin(Byte.parseByte(String.valueOf(0)));
    						}

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Redirection de JSP vers servlet
    Par janyoura dans le forum Servlets/JSP
    R�ponses: 9
    Dernier message: 01/10/2013, 15h13
  2. liaison jsp vers servlet vers jsp
    Par wafabrj dans le forum Servlets/JSP
    R�ponses: 4
    Dernier message: 13/06/2012, 16h07
  3. envoi de donn�e de jsp vers servlet
    Par alen22 dans le forum Servlets/JSP
    R�ponses: 5
    Dernier message: 05/04/2011, 22h04
  4. Transf�re objet JSP vers Servlet
    Par yakuzayang dans le forum Servlets/JSP
    R�ponses: 7
    Dernier message: 02/02/2011, 15h04
  5. lien jsp vers servlet avec passage de parametre
    Par cool dans le forum Servlets/JSP
    R�ponses: 2
    Dernier message: 15/05/2008, 22h59

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