[JAVA EE] Liste Déroulantes Liées Servlet

Liste Déroulantes Liées Servlet [JAVA EE] - Java - Programmation

Marsh Posté le 28-09-2017 à 09:55:00    

Bonjour à tous !
Je sais que de nombreux sujet traite déjà de ma question, mais beaucoup sont en php et en java je ne trouve pas ma réponse.
 
J'ai déjà une partie de code construit. Et je pense que le problème vient de ma servlet car lorsque je rentre idSelect = (long) 1, il me ressort bien la zone 1 de ma liste. Mais du coup j'ai pas vraiment d'idée !
Je vous montre mon code : (j'ai enlever des grosses partie de mon code qui ne sont pas utile dans mon problème donc ne soyez pas étonné de certaines choses! Cela rend la lecture plus simple)
 
stationForm.jsp  
 

Code :
  1. <%@ page pageEncoding="UTF-8" %>
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  3. <!DOCTYPE html>
  4. <html>
  5. <head>
  6.  <c:import url="/WEB-INF/includePart/header.jsp">
  7.       <c:param name="title" value="Nouvelle Station"></c:param>
  8.      </c:import>
  9. </head>
  10. <body>
  11.    <div class="menuPerso">
  12.       <c:import url="/WEB-INF/includePart/menu.jsp"></c:import>
  13.      </div>
  14.   <form class="form-signin" method="post" action="<c:url value="/station" />">
  15.        
  16.                 <h2 class="form-signin-heading">Nouvelle Station</h2>
  17.    <label for="chantier" class="sr-only">Nom du Chantier</label>
  18.                 <select class="form-control" id="chantier_id" name="chantier_id" onchange = "listZone();" required autofocus >
  19.                  <option id="chantier_id" value="">Chantier</option>
  20.                  <c:forEach items="${arrayChantier}" var="chantier">
  21.                   <option value="${chantier['chantier_id']}, ${chantier['chantier_name']}">${chantier['chantier_name']}</option>
  22.     </c:forEach>
  23.    </select>
  24.    <span class="error">${form.errors['chantier_name']}</span>
  25.    <br><br>
  26.    <label for="zone" class="sr-only">Nom de la Zone</label>
  27.              <select class="form-control" id="zone_id" name="zone_id" required autofocus>
  28.              <option  id="zone_id" value="" >Zone</option>
  29.               <c:forEach items="${arrayZone}" var="zone">
  30.                   <option value="${zone['zone_id']}">${zone['zone_name']}</option>
  31.     </c:forEach>
  32.    </select>
  33.    <span class="error">${form.errors['zone_name']}</span>
  34.    <br><br>
  35.                
  36.                 <p class="${empty form.errors ? 'succes' : 'error'}">${form.resultat}</p>
  37.         </form>
  38.        
  39. <script src="<c:url value="/JS/dynamicListForm.js" />"></script>
  40. </body>
  41. </html>


 
dynamicListForm.js

Code :
  1. function getXhr()
  2. {
  3.  var xhr = null;
  4.    
  5.  if(window.XMLHttpRequest) {
  6.   xhr = new XMLHttpRequest();
  7.  }
  8.      else if(window.ActiveXObject) {
  9.       try {
  10.        xhr = new ActiveXObject("Msxml2.XMLHTTP" );
  11.          } catch (e) {
  12.          xhr = new ActiveXObject("Microsoft.XMLHTTP" );
  13.          }
  14.      }
  15.      else {
  16.       alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest" );
  17.          xhr = false;
  18.      }
  19.      return xhr;
  20. }
  21.  
  22. function listZone()
  23. {
  24. var xhr = getXhr();
  25. xhr.onreadystatechange = function() {
  26.  if(xhr.readyState == 4){
  27.   if (xhr.status == 200 || xhr.status == 0) {
  28.    select = xhr.responseText;
  29.          document.getElementById('zone_id').innerHTML = select;
  30.      }
  31.   else {
  32.    alert('Erreur :' +xhr.status + ' '+xhr.statusText);
  33.   }
  34.  }
  35. };
  36. xhr.open("GET","/Auscultation/station",true);
  37. xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  38. chantierSelect = document.getElementById('chantier_id');
  39. idParent = chantierSelect.options[chantierSelect.selectedIndex].value;
  40. xhr.send(null);
  41. }


 
AddStationServlet.java

Code :
  1. package com.auscult.servlets;
  2. import java.io.IOException;
  3. import java.util.ArrayList;
  4. import java.util.Map;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.Cookie;
  7. import javax.servlet.http.HttpServlet;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. import javax.servlet.http.HttpSession;
  11. import com.auscult.beans.Chantier;
  12. import com.auscult.beans.Zone;
  13. import com.auscult.forms.StationForm;
  14. import com.auscult.forms.ZoneForm;
  15. import com.auscult.dao.DaoChantier;
  16. import com.auscult.dao.DaoUser;
  17. import com.auscult.dao.DaoStation;
  18. import com.auscult.dao.DAOFactory;
  19. import com.auscult.dao.DaoZone;
  20. import com.google.gson.Gson;
  21. public class AddStationServlet extends HttpServlet {
  22. private static final long serialVersionUID = 1L;
  23. public static final String ATT_USER    = "user";
  24.     public static final String ATT_FORM    = "form";
  25.     public static final String CONF_DAO_FACTORY  = "daofactory";
  26.     public static final String ATT_SESSION_USER  = "userSession";
  27.     public static final String COOKIE_CONNECTION = "cookieConnection";
  28.    
  29.  
  30.     public static final String VUE         = "/WEB-INF/admin/create/stationForm.jsp";
  31.     public static final String HOME     = "/station";
  32.    
  33.     public String chemin;
  34.     public String station_dir;
  35.    
  36.     public String host;
  37. public String username;
  38. public String password;
  39. public String[] FTPtab  = new String [5];
  40.     private DaoUser   daoUser;
  41.     private DaoStation      daoStation;
  42.     private DaoZone   daoZone;
  43.     private DaoChantier  daoChantier;
  44.    
  45.     public void init() throws ServletException {
  46.    
  47.         this.daoStation = ( (DAOFactory) getServletContext().getAttribute( CONF_DAO_FACTORY ) ).getStationDao();
  48.         this.daoChantier = ( (DAOFactory) getServletContext().getAttribute( CONF_DAO_FACTORY ) ).getChantierDao();
  49.         this.daoZone = ( (DAOFactory) getServletContext().getAttribute( CONF_DAO_FACTORY ) ).getZoneDao();
  50.         this.daoUser = ( (DAOFactory) getServletContext().getAttribute( CONF_DAO_FACTORY ) ).getUserDao();
  51.     }
  52.     public void doGet( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException{
  53.      HttpSession session = request.getSession();
  54.    
  55.      Long idSelect = null;
  56.      if (request.getParameter("select" )!= null){
  57.   idSelect = Long.parseLong(request.getParameter( "select" ));
  58.  }
  59.    
  60.      ArrayList<Chantier> arrayChantier = daoChantier.findAllChantier();
  61.      ArrayList<Zone> arrayZone = daoZone.findByChantier(idSelect);      
  62.  request.setAttribute("arrayChantier", arrayChantier);
  63.  request.setAttribute("arrayZone", arrayZone);
  64.    
  65.    
  66.         if ( session.getAttribute( ATT_SESSION_USER ) == null && getCookieValue(request, COOKIE_CONNECTION) == null) {
  67.             response.sendRedirect( request.getContextPath() + HOME );
  68.         } else {
  69.          if(session.getAttribute( ATT_SESSION_USER ) == null)
  70.          {
  71.           session.setAttribute(ATT_SESSION_USER, daoUser.find(Long.parseLong(getCookieValue(request, COOKIE_CONNECTION))));
  72.          }
  73.        
  74.             this.getServletContext().getRequestDispatcher( VUE ).forward( request, response );
  75.            
  76.         }
  77.       }
  78.    
  79.    
  80.     private static String getCookieValue( HttpServletRequest request, String nom ) {
  81.         Cookie[] cookies = request.getCookies();
  82.         if ( cookies != null ) {
  83.             for ( Cookie cookie : cookies ) {
  84.                 if ( cookie != null && nom.equals( cookie.getName() ) ) {
  85.                     return cookie.getValue();
  86.                 }
  87.             }
  88.         }
  89.         return null;
  90.     }
  91.  
  92. }


 
DaoImplZone.java (si ca peut etre utile!)

Code :
  1. package com.auscult.dao;
  2. import java.sql.*;
  3. import java.util.ArrayList;
  4. import com.auscult.beans.Station;
  5. import com.auscult.beans.Zone;
  6. import static com.auscult.dao.DaoTools.*;
  7. public class DaoImplZone implements DaoZone{
  8. private static final String SQL_SELECT_WHERE_CHANTIER_ID ="SELECT zone_id, zone_name, x1, y1, x2, y2, x3, y3, chantier_name, last_name "
  9.                + "FROM zone "
  10.                + "INNER JOIN chantier ON zone.FK_chantier_id = chantier.chantier_id "
  11.                + "INNER JOIN user ON chantier.FK_user_id = user.user_id WHERE chantier_id = ?";
  12. private DAOFactory          daoFactory;
  13.     DaoImplZone( DAOFactory daoFactory ) {
  14.         this.daoFactory = daoFactory;
  15.     }
  16.    
  17.    
  18.     @Override
  19.     public ArrayList<Zone> findByChantier ( Long chantier_id ) throws DAOException {
  20.      System.out.println("verifie DaoImplZone findChantier" );
  21.      Connection connexion = null;
  22.         PreparedStatement preparedStatement = null;
  23.         ResultSet resultSet = null;
  24.         ArrayList<Zone> listZone = new ArrayList<Zone>();
  25.         try {
  26.          
  27.             connexion = daoFactory.getConnection();
  28.             preparedStatement = initPreparedRequest( connexion, SQL_SELECT_WHERE_CHANTIER_ID, false, chantier_id );
  29.             resultSet = preparedStatement.executeQuery();
  30.             while ( resultSet.next() ) {
  31.              listZone.add(map(resultSet));
  32.             }
  33.         } catch ( SQLException e ) {
  34.          System.out.println("error sql exception = " + e.getMessage());
  35.             throw new DAOException( e );
  36.         } finally {
  37.             silentClose( resultSet, preparedStatement, connexion );
  38.         }
  39.        
  40.         System.out.println("size"+listZone.size());
  41.         return listZone;
  42.     }
  43.  
  44. }


 
Lorsque je select un élément de ma liste, il ne retourne rien dans ma deuxieme list (à vrai dire je me suis inspiré de ce forum https://www.developpez.net/forums/d [...] tes-liees/ surtout pour la servlet ^^)
 
Je vous remercie d'avance  
Ca fait vraiment un moment que je suis bloqué et je manque de connaissance pour trouvé, so .. HELP MEEE, PLEASE  !! ^^  
(désolé pour les fautes d'orthographes, on me le reproche souvent!)


Message édité par killkala le 02-10-2017 à 10:26:50
Reply

Marsh Posté le 28-09-2017 à 09:55:00   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed