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 :

problème jsp servlets getParameter null


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 47
    Points : 32
    Points
    32
    Par défaut problème jsp servlets getParameter null
    Bonjour,

    J'ai un problème un peu particulier. J'utilise dans une page jsp (maPage.jsp) un tableau avec pagination 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
    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
     
    <%
        int cpt = 0;
        int d = (Integer.parseInt(request.getAttribute("currentPage").toString()) - 1) * Integer.parseInt(request.getAttribute("recordsPerPage").toString());
        int f = d + Integer.parseInt(request.getAttribute("recordsPerPage").toString()) - 1;
    %>
     
    <c:forEach begin="<%=d%>" end="<%=f%>" var="myObject" items="${requestScope.liste1}">
    	<form id="form1" class="form1" method="post" action="<c:url value='/test/test1'/>">
            <tr>
    			<th align ="center">
    				<input type="text" value="${myObject}"/>
                    <input class="myButton" type="submit" name="myButton" value="  ">
                </th>
    		</tr>
    	</form>
    </c:forEach>
     
    <c:if test="${currentPage != 1}">
    <table class="table_placeholderContent_pagination" border="0">
        <tr>
    		<form id="form_pagination" method="post" action="<c:url value='/test/test1'/>">
    			<input id="page" name="page" type="hidden" value="${currentPage - 1}" readonly="readonly">
    			<td><input class="inputPagination" type="submit" value="Previous"></td>
    		</form>
        </tr>
    </table>
    </c:if>
     
    <table class="table_placeholderContent_pagination" border="0">
    	<tr>
    		<c:forEach begin="1" end="${nbPages}" var="i">
    			<c:choose>
    				<c:when test="${currentPage eq i}">
    					<td><input class="inputPagination1" type="button" value="${i}"></td>
    					</c:when>
    					<c:otherwise>
    				<form id="form_pagination" method="post" action="<c:url value='/test/test1'/>">
    					<input id="page" name="page" type="hidden" value="${i}" readonly="readonly">
    					<td><input class="inputPagination" type="submit" value="${i}"></td>
    				</form>
    			</c:otherwise>
    		</c:choose>
    	</c:forEach>
    	</tr>
    </table>
     
    <c:if test="${currentPage lt nbPages}">
    <table class="table_placeholderContent_pagination" border="0">
        <tr>
    		<form id="form_pagination" method="post" action="<c:url value='/test/test1'/>">
    			<input id="page" name="page" type="hidden" value="${currentPage + 1}" readonly="readonly">
    			<td><input class="inputPagination" type="submit" value="Next"></td>
    		</form>
        </tr>
    </table>
    </c:if>
    Et dans ma servlet test1, j'ai le code suivant :

    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
     
    	@Override
        public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    		int page = 1;
            int recordsPerPage = 5;
            int noOfRecords;
            int noOfPages;
            request.setAttribute("recordsPerPage", recordsPerPage);
     
    		List<String> liste1 = new LinkedList<>();
    		liste1.add("test");
    		request.setAttribute("liste1", liste1);
     
    		if (request.getParameter("myButton") != null) {
                // venir ici !!!!
    		}
     
    		if (request.getParameter("page") != null) {
                page = Integer.parseInt(request.getParameter("page"));
            }
            noOfRecords = liste1.size();
            noOfPages = (int) Math.ceil(noOfRecords * 1.0 / recordsPerPage);
            request.setAttribute("nbPages", noOfPages);
            request.setAttribute("currentPage", page);
    		this.getServletContext().getRequestDispatcher("maPage.jsp").forward(request, response);
    	}
     
    	@Override
        public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doGet(request, response);
        }
    Mon problème est le suivant :
    si nous sommes sur le 1er élément de la dernière page, alors le clic sur le bouton submit ne marchera pas (j'ai essayé avec un débuggeur, il ne rentre pas dans le if (request.getParameter("myButton") != null), je ne comprends pas pourquoi !
    par exemple, si comme ici nous avons qu'un seul élément dans la liste, alors nous sommes sur la page 1 qui est la dernière page. Et comme nous cliquons également sur le bouton de la ligne 1 (qui est également la dernière de cette dernière page), eh bien ça ne marche pas !

    Si vous ne comprenez pas dans quel cas ça ne marche pas pcq je me suis mal exprimé, n'hésitez pas à me le dire et je ré-expliquerai !

    dans tous les autres cas (si la liste est plus grande et qu'on clique sur n'importe quel autre bouton de n'importe quelle ligne à part la dernière de la dernière page), ça fonctionne (il rentre bien dans le if)

    Vous comprenez pourquoi vous ??!

  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,

    On ne peut pas dire que ton explication soit très claire... Mais bon je pense avoir compris quand même.

    Ton problèmes vient du fait que tu as quarte formulaires sur ta page (tu ouvres quatre fois la balise <form>). Quand tu cliques sur le bouton submit d'un de tes formulaires tu ne soumets pas les autres formulaires, tu ne soumets que celui pour lequel tu as cliqué sur le bouton submit.

    Crées un seul formulaire englobant tous tes bouton et ça devrait avoir le comportement que tu souhaites...

    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
     
    <%
        int cpt = 0;
        int d = (Integer.parseInt(request.getAttribute("currentPage").toString()) - 1) * Integer.parseInt(request.getAttribute("recordsPerPage").toString());
        int f = d + Integer.parseInt(request.getAttribute("recordsPerPage").toString()) - 1;
    %>
     
    <form id="form1" class="form1" method="post" action="<c:url value='/test/test1'/>">
     
    <c:forEach begin="<%=d%>" end="<%=f%>" var="myObject" items="${requestScope.liste1}">	
            <tr>
    			<th align ="center">
    				<input type="text" value="${myObject}"/>
                    <input class="myButton" type="submit" name="myButton" value="  ">
                </th>
    		</tr>
    </c:forEach>
     
    <c:if test="${currentPage != 1}">
    <table class="table_placeholderContent_pagination" border="0">
        <tr>
    			<input id="page" name="page" type="hidden" value="${currentPage - 1}" readonly="readonly">
    			<td><input class="inputPagination" type="submit" value="Previous"></td>
        </tr>
    </table>
    </c:if>
     
    <table class="table_placeholderContent_pagination" border="0">
    	<tr>
    		<c:forEach begin="1" end="${nbPages}" var="i">
    			<c:choose>
    				<c:when test="${currentPage eq i}">
    					<td><input class="inputPagination1" type="button" value="${i}"></td>
    					</c:when>
    					<c:otherwise>
    					<input id="page" name="page" type="hidden" value="${i}" readonly="readonly">
    					<td><input class="inputPagination" type="submit" value="${i}"></td>
    			</c:otherwise>
    		</c:choose>
    	</c:forEach>
    	</tr>
    </table>
     
    <c:if test="${currentPage lt nbPages}">
    <table class="table_placeholderContent_pagination" border="0">
        <tr>
    			<input id="page" name="page" type="hidden" value="${currentPage + 1}" readonly="readonly">
    			<td><input class="inputPagination" type="submit" value="Next"></td>
        </tr>
    </table>
    </c:if>
    </form>
    Romain.

  3. #3
    Membre actif Avatar de hbennou
    Homme Profil pro
    Développeur Java
    Inscrit en
    Mai 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 162
    Points : 205
    Points
    205
    Par défaut
    Je ne vois pas trop ce que t'as voulu faire avec ca?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <input class="myButton" type="submit" name="myButton" value="  ">
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (request.getParameter("myButton") != null)

  4. #4
    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
    Citation Envoyé par hbennou Voir le message
    Je ne vois pas trop ce que t'as voulu faire avec ca?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <input class="myButton" type="submit" name="myButton" value="  ">
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (request.getParameter("myButton") != null)
    Détecter si c'est la première fois qu'il vient sur la page, ou si c'est suite au clique d'un bouton du formulaire je pense... C'est pas joli joli...

    Romain.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 47
    Points : 32
    Points
    32
    Par défaut
    Bonjour et merci de votre aide

    C'est un peu flou pour vous pcq j'ai généralisé et simplifié le code car tout ne peut pas être public !

    Pourquoi j'ai fait ça, tout simplement pcq chaque ligne de mon tableau est un formulaire à lui seul (chaque ligne contient du blabla, et un bouton supprimer (ainsi que d'autres boutons mais c'est celui là qui pose problème))

    Lors du clic sur ce fameux bouton, la ligne est censée être supprimée (et comme je l'ai dit auparavant, ça marche dans 99% des cas !)

    Le seul cas d'erreur, c'est lors du clic sur le bouton supprimer du tout dernier élément de ma liste: il ne se passe rien pcq le request.getParameter('myButton') renvoie null..

    Donc pour vous répondre, je ne peux pas mettre un form global, car chaque ligne est un formulaire !

    Si vous avez d'autres idées, je suis preneur

Discussions similaires

  1. Problème JSP / Servlet + JfreeChart
    Par Hellnino18 dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 23/06/2009, 15h01
  2. [struts][jsp] problème avec request.getParameter
    Par stago dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 01/07/2004, 23h52
  3. [JSP][Servlet] getAttribute et getParameter
    Par Kimael dans le forum Servlets/JSP
    Réponses: 7
    Dernier message: 09/06/2004, 16h35
  4. [servlet]problème de variable jamais nulle
    Par omega dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 18/03/2004, 09h31
  5. [jsp]problème avec request.getParameter(...)!
    Par fadoua dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 01/09/2003, 13h26

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