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 :

Recupérer variable Servlet dans Javascript


Sujet :

Servlets/JSP Java

  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 45
    Par défaut Recupérer variable Servlet dans Javascript
    Bonjour,

    Situons tout d'abord le contexte : J'ai une jsp faisant du retrieve dans la BDD. Elle doit afficher une box alert quand le nombre de résultats qui va être affiché est trop élevé.
    L'utilisateur désire voir dans cette box alert le nombre de résultats qui va être retourné.

    Le nombre de résultats est calculé dans la Servlet.

    Mon probème est que je n'arrive pas à recupérer dans le javascript la nombre de résultats que je calcule dans la Servlet.

    J'ai tenté avec le code ci-dessous, qui ne fonctionne pas. Je n'ai pas trouvé de réponse à ma question sur le net jusqu'à maintenant.

    Auriez-vous des idées svp ?

    Code de la 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
     
    	public ActionForward execute(final ActionMapping mapping, final ActionForm form,final HttpServletRequest request, final HttpServletResponse response) {
     
    try {
    ...
     
    Integer resultSize = 0;
     
    request.setAttribute("numberOfResults", resultSize);
    throw new FunctionnalException("toomuchresultlist");
     
    } catch (FunctionnalException e) {
       request.setAttribute(e.getMessage(), e);
       return mapping.findForward(e.getMessage());
    } catch (Exception e) {
       log.error("TcrpabpListAction.execute : " + e);
    }
    return mapping.findForward("success");
    }
    et la partie script de la jsp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ..
     
    function informtoomuchresultlist() {
    alert(document.getElementById.getAttribute('numberOfResults')+'<bean:message key="label.generic.alert.toomuchresultlist"/>');
    }
     
    ...
     
    <logic:present name="toomuchresultlist">
    	<script>informtoomuchresultlist()</script>
    </logic:present>

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Par défaut
    Pourquoi tu as mis cette ligne ??

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    throw new FunctionnalException("toomuchresultlist");
    Tu lances systématiquement une FunctionnalException !?

    Sinon dans ta JSP tu récupères la variable que tu as mis dans la request :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <% String numberOfResult = request.getParameter("numberOfResults"); %>

  3. #3
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 45
    Par défaut
    Bonjour Slevy,

    Non je ne la lance pas systématiquement mais j'ai enlevé du code de la Servlet dans un souci de lisibilité.

    Sinon je la lance pour la détecter dans la jsp (à l'aide de la balise <logic>)

    Je vais tester cete récupération.

    Je tester ton code et te tiens au courant.

  4. #4
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 45
    Par défaut
    Cela ne semble pas fonctionner.

    La fonction est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    function informtoomuchresultlist() {
    alert(numberOfResult + '<bean:message key="label.generic.alert.toomuchresultlist"/>');
    }
    Et quant à la récupération du numberOfResult j'ai tenté en la plaçant ici :
    [CODE]
    ...
    <%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%>
    <%@ taglib uri="http://displaytag.sf.net" prefix="display"%>


    <script type="text/javascript" language="javascript" charset="utf-8">

    <% String numberOfResult = request.getParameter("numberOfResults"); %
    ...
    >CODE]

    Et là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ...
    <%@ taglib uri="http://java.sun.com/jstl/fmt" prefix="fmt"%>
    <%@ taglib uri="http://displaytag.sf.net" prefix="display"%>
     
    <% String numberOfResult = request.getParameter("numberOfResults"); %
     
    <script type="text/javascript" language="javascript" charset="utf-8">
    ...
    Vois-tu une anomalie ?

  5. #5
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    C'est plutôt un request.getAttribute qu'il faut faire pour récupérer la variable mise dans le scope request via un request.setAttribute.

    Sinon, si tu es en J2EE 1.4, tu peux passer la valeur de la variable numberOfResults en paramètre de la fonction Javascript via une EL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script>informtoomuchresultlist('${numberOfResults}')</script>
    sinon, il faut utiliser le tag bean:write.

  6. #6
    Membre confirmé
    Inscrit en
    Décembre 2004
    Messages
    45
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 45
    Par défaut
    Le getAttribute ne fonctionnait pas non plus. Peut-etre que je n'ai pas su l'employer correctement.

    Le bean:write fonctionne en revanche parfaitement et s'avère plus simple d'utilisation.

    Merci !!

  7. #7
    Expert confirmé

    Femme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    5 793
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 793
    Par défaut
    Avec le getAttribute, il aurait fallu coder ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <% String numberOfResults = (String) request.getAttribute("numberOfResults") ;%>
    et ensuite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script>informtoomuchresultlist('<%=numberOfResults%>')</script>
    Mais comme tu utilises Struts, il est plus simple d'utiliser le tag bean:write.

    ça ne fonctionne pas avec l'EL ?

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

Discussions similaires

  1. variable php dans javascript
    Par thilde dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/01/2008, 10h32
  2. [PHP-JS] [Débutant]Variables php dans javascript
    Par Nibor dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 17/07/2007, 20h58
  3. [PHP-JS] Variables PHP dans JavaScript
    Par m3n2o dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 29/01/2007, 13h09
  4. [PHP-JS] Soucis variable php dans javascript.
    Par cisse18 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 13/07/2006, 10h47
  5. Variable Java dans JavaScript
    Par blaiseac dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 01/12/2004, 14h09

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