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 avec req.getRequestDispatcher("LienJSP").forward(req, resp)


Sujet :

Servlets/JSP Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2014
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2014
    Messages : 24
    Points : 34
    Points
    34
    Par défaut Problème avec req.getRequestDispatcher("LienJSP").forward(req, resp)
    Bonjour,

    J'ai un assez gros problème je développe un programme soit des rendements brut, soit des rendements net.
    De base il me calcule le rendement net dans cette servlet.

    Code Java : 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
    package production.efficency.servlets;
     
    import java.io.IOException;
    import java.util.Date;
     
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
     
    import org.apache.log4j.Logger;
     
    import commun.OutilsDate;
    import commun.OutilsHTML;
    import commun.TransactionBD;
    import production.efficency.bd.MonthlySegeparEfficiencyBdd;
    import production.efficency.objets.MapDeRemplissageRendements;
     
    public class MonthlySegeparEfficiencyServlet extends HttpServlet{
     
    	private static final String PERIODE = "periode";
    	private static final long serialVersionUID = -9014369935942596742L;
    	private static final Logger LOG = Logger.getLogger(MonthlySegeparEfficiencyServlet.class);
    	String brut = "false";
     
    	@Override
    	public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		this.doPost(req,resp);
    	}
     
    	@Override
    	public void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    		try(TransactionBD transactionBD = new TransactionBD(TransactionBD.CONST_LFB);){	
     
    			String periode = req.getParameter(PERIODE) != null ? OutilsHTML.decode(req.getParameter(PERIODE)) : null;
    			brut = req.getParameter("brut");
     
    			Date dPeriode = new Date();
    			if(OutilsDate.isDate(periode)) {
    				dPeriode = OutilsDate.getDate(periode);
    			}
     
    			int dateDeb = OutilsDate.getNumericDate(OutilsDate.getDelimiteurDate(OutilsDate.DEBUT, OutilsDate.MOIS, dPeriode));
    			int dateFin = OutilsDate.getNumericDate(OutilsDate.getDelimiteurDate(OutilsDate.FIN, OutilsDate.MOIS, dPeriode));
    			MapDeRemplissageRendements mapDeRemplissageRendements = null;
     
    				if("false".equals(brut)) {
    					mapDeRemplissageRendements = MonthlySegeparEfficiencyBdd.loadMonthlyEfficiencyNet(dateDeb, dateFin, transactionBD);
    				}else {
    					mapDeRemplissageRendements = MonthlySegeparEfficiencyBdd.loadMonthlyEfficiencyNew(dateDeb, dateFin, transactionBD);
    				}
    				//Totaux mensuelles
     
    				req.setAttribute("mapEff", mapDeRemplissageRendements.getMapEff());
     
    				//List tout les jour
     
    				req.setAttribute("mapMonthEff", mapDeRemplissageRendements.getMapMonthEff(/*req.getParameter("net") != null)*/));
     
     
    			req.setAttribute(PERIODE, OutilsDate.getDate(dateDeb));
     
    		}catch(Exception e ){
    			LOG.error("BRU - Erreur : "+e);
    		}
     
    		req.getRequestDispatcher("/Production/Efficiency/monthlyEfficiencySegepar.jsp").forward(req, resp);
     
    	}
     
     
    }

    Au premier affichage de la jsp tout ce passe bien (c'est assez rapide)

    Sauf que sur ma jsp j'ai deux checkbox une rendement brut, l'autre rendement net quand je clique sur l'une des deux, je fais un appel ajax vers cette même servlet en remplissant brut true ou à false.

    Code JavaScript : 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
    		$(".checkbox-brut").on('click', function(){
    			   if(this.checked){
    				   $(".checkbox-net").attr('disabled', 'disabled');
    					$.ajax({
    				        dataType: "json",
    				        url: "/ALMA/Production/SegeparEfficiency/MonthlySegeparEfficiencyServlet",
    				        data: {
    				        	brut: true
    				        },
     
    				        success: function(data) {
     
    				        }
    				    });
     
     
     
    			   }else{
    				   $(".checkbox-net").removeAttr('disabled');
    			   }
    			});

    Comme ça il prend la méthode de calcul qui lui intéresse puis ré affiche la jsp avec les bonnes info (Sauf qu'au moment de faire son req.GetRequestDispatcher, il reste à tourne à l'infini, il ne m'affiche jamais ma JSP).

    Seriez-vous pourquoi ça me fait cela ? avez-vous une idée.

    Merci,

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 311
    Points : 9 524
    Points
    9 524
    Billets dans le blog
    1
    Par défaut
    Plusieurs erreurs de compréhension des servlets et d'ajax...

    Une servlet est multi-thread, tous les clients (les différentes personnes sur leur navigateur) enverront leur requête à la même servlet, il ne faut donc JAMAIS mettre des paramètres comme propriétés de la servlet.
    User A appel la servlet, le request.getParameter(...) positionne la valeur pour la servlet
    User B appel la servlet à une fraction de seconde près, request.getParameter(...) positionne sa valeur et écrase la précédente de User A, du coup, si le traitement était suffisamment long, il pourrait passer d'une valeur à l'autre au cours de process...
    Bref, mauvaise idée...
    On met toujours les propriétés à l'intérieur de la méthode doGet (ou doPost ou service), là, aucun risque.

    Ensuite, une requête ajax ne va pas te remplacer ta vue, elle est là pour envoyer des données au serveur sans quitter la vue en cours, ce n'est donc pas judicieux dans ton cas de faire une requête de ce type.
    Tu devrais simplement soumettre le formulaire et au retour envoyer la page qui convient.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 25/03/2010, 19h13
  2. [MySQL] Problème avec le single quote
    Par popcorn dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 02/12/2008, 23h44
  3. [Shell] Problème avec le Back-quote (ksh)
    Par bob94700 dans le forum Linux
    Réponses: 3
    Dernier message: 27/01/2008, 12h45
  4. Sudo problème avec les simples quotes
    Par Tronche dans le forum Shell et commandes GNU
    Réponses: 5
    Dernier message: 23/03/2007, 12h02
  5. [MySQL] Problème avec un double quote
    Par wormseric dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 26/01/2007, 14h44

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