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 :

variable session dans header en include


Sujet :

Servlets/JSP Java

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 133
    Points
    133
    Par défaut variable session dans header en include
    Pourquoi dans ma page en include, ceci marche :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="header">Bonjour
    <% int variable = 0; out.println("On peut aussi écrire des variables : " + variable); %>. 
    </div>

    et ceci non :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <div id="header">Bonjour
    <% out.print(" "+user.get(1));%>
    </div>

    alors que toutes mes pages ont en haut de page un :
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <jsp:useBean id="user" class="java.util.ArrayList" scope="session" />

    C'est possible ?

    Bien à vous,

    hpl76.

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

    Informations forums :
    Inscription : Juin 2007
    Messages : 383
    Points : 468
    Points
    468
    Par défaut
    Tu as bien mis une instance de ArrayList en session sous le nom "user" ?

    Quel est le message d'erreur ?

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 133
    Points
    133
    Par défaut
    Bonjour et merci de ta réponse.

    Je suis noob en java/jsp donc excuse mes lacunes.

    Si je prends par exemple ce même code dans une page pure JSP sans include ca m'affiche bien le nom de ma variable de session genre : "hpl76". Dès que j'outprintln ma variable de session dans un include, ca merde. Je n'ai pas de message d'erreur à proprement parler j'ai juste l'affichage de ma page qui s'arrête. Le header est squizzé, le footer aussi, j'ai qu'une div sans rien d'autre.

    hpl76

  4. #4
    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 525
    Points
    9 525
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par hpl76 Voir le message
    C'est possible ?
    Oui

    Il faut enregistrer l'objet en session sous le nom "user"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    request.getSession().setAttribute("user", objetUser);
    et après, ça fonctionnera...
    (sauf si le <jsp:useBean> se trouve après l'utilisation, bien sûr)

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

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 133
    Points
    133
    Par défaut
    Le mieux c'est que je poste ma page type :

    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
    <jsp:useBean id="user" class="java.util.ArrayList" scope="session" />
    <% if(user.isEmpty()){ 
        response.sendRedirect ("index.jsp");
            }else{ %>
     
    <%@page contentType="text/html" pageEncoding="UTF-8"%>
    <%@ page import="conn.ConnectionDB,java.util.Vector,java.util.HashMap" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
       "http://www.w3.org/TR/html4/loose.dtd">
     
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
            <title>Application Master Data</title>
            <link rel="stylesheet" href="f2s.css" type="text/css"></link>
        </head>
        <body>
            <div id="global">
                <jsp:include page="header.jsp" flush="true"></jsp:include>
                <div id="middle">
                    <div id="middletype">MA PAGE TYPE</div>
                </div>
                <div id="gruge"></div>
                <jsp:include page="footer.jsp" flush="true"></jsp:include>
            </div>    
        </body>
    </html>
    <% } %>
    le header contient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <div id="header">Bonjour
    <% out.print(" "+user.get(1));%>,
    </div>
    <div id="fil"><jsp:include page="fil.jsp" flush="true"></jsp:include></div>
    <div id="cut"></div>
    Une idée ? J'ai mal fait ? Merci à vous !

    hpl76

  6. #6
    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 525
    Points
    9 525
    Billets dans le blog
    1
    Par défaut
    A ben oui, tu as mal fait...

    Il faut mettre le <jsp:useBean> dans la page header.jsp également.
    Quand tu fais <jsp:include>, tu appelles l'exécution d'une autre page, elle n'a pas accès aux variables de la page appelante.

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

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 133
    Points
    133
    Par défaut
    C'est mes réflexes de PHPistes ^^

    Ca marche nickel ! MERCI !!!!!

    Le système ne gueule pas quand on fait appel à des "doublons" de la sorte ? Pourquoi ne prend-il pas en compte les instructions déclarées au préalable ?
    Je veux pas que tu perdes ton temps non plus à me répondre

    hpl76

  8. #8
    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 525
    Points
    9 525
    Billets dans le blog
    1
    Par défaut
    En fait, tu as l'appel de la servlet qui représente ta page jsp (au cas où tu l'ignorais, une jsp => une servlet) qui se plante à l'exécution et donc ne renvoie rien.

    Si tu veux voir ce qui correspond à ta page jsp, tu peux aller voir dans le répertoire temporaire de ton serveur d'application le résultat de la compilation de la page.
    Avec Tomcat, tu as une arborescence du type
    C:\Program Files\Apache Software Foundation\Tomcat 5.5\work\Catalina\localhost\GTCWeb\org\apache\jsp et là, tu trouves tes pages compilées
    Ci-joint un exemple
    package org.apache.jsp;

    import javax.servlet.*;
    import javax.servlet.http.*;
    import javax.servlet.jsp.*;

    public final class erreurServeur_jsp extends org.apache.jasper.runtime.HttpJspBase
    implements org.apache.jasper.runtime.JspSourceDependent {

    private static java.util.List _jspx_dependants;

    static {
    _jspx_dependants = new java.util.ArrayList(1);
    _jspx_dependants.add("/WEB-INF/struts-layout.tld");
    }

    private org.apache.jasper.runtime.TagHandlerPool _jspx_tagPool_layout_html_locale;
    private org.apache.jasper.runtime.TagHandlerPool _jspx_tagPool_layout_skin_includeScript_nobody;
    private org.apache.jasper.runtime.TagHandlerPool _jspx_tagPool_layout_lien_url_label_imageUrl_nobody;

    public Object getDependants() {
    return _jspx_dependants;
    }

    public void _jspInit() {
    _jspx_tagPool_layout_html_locale = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
    _jspx_tagPool_layout_skin_includeScript_nobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
    _jspx_tagPool_layout_lien_url_label_imageUrl_nobody = org.apache.jasper.runtime.TagHandlerPool.getTagHandlerPool(getServletConfig());
    }

    public void _jspDestroy() {
    _jspx_tagPool_layout_html_locale.release();
    _jspx_tagPool_layout_skin_includeScript_nobody.release();
    _jspx_tagPool_layout_lien_url_label_imageUrl_nobody.release();
    }

    public void _jspService(HttpServletRequest request, HttpServletResponse response)
    throws java.io.IOException, ServletException {

    JspFactory _jspxFactory = null;
    PageContext pageContext = null;
    HttpSession session = null;
    Throwable exception = org.apache.jasper.runtime.JspRuntimeLibrary.getThrowable(request);
    if (exception != null) {
    response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
    }
    ServletContext application = null;
    ServletConfig config = null;
    JspWriter out = null;
    Object page = this;
    JspWriter _jspx_out = null;
    PageContext _jspx_page_context = null;


    try {
    _jspxFactory = JspFactory.getDefaultFactory();
    response.setContentType("text/html; charset=UTF-8");
    pageContext = _jspxFactory.getPageContext(this, request, response,
    null, true, 8192, true);
    _jspx_page_context = pageContext;
    application = pageContext.getServletContext();
    config = pageContext.getServletConfig();
    session = pageContext.getSession();
    out = pageContext.getOut();
    _jspx_out = out;

    out.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">\r\n");
    out.write("\r\n");
    out.write("\r\n");
    out.write("\r\n");
    out.write("\r\n");
    // layout:html
    fr.improve.struts.taglib.layout.HtmlTag _jspx_th_layout_html_0 = (fr.improve.struts.taglib.layout.HtmlTag) _jspx_tagPool_layout_html_locale.get(fr.improve.struts.taglib.layout.HtmlTag.class);
    _jspx_th_layout_html_0.setPageContext(_jspx_page_context);
    _jspx_th_layout_html_0.setParent(null);
    _jspx_th_layout_html_0.setLocale(true);
    int _jspx_eval_layout_html_0 = _jspx_th_layout_html_0.doStartTag();
    if (_jspx_eval_layout_html_0 != javax.servlet.jsp.tagext.Tag.SKIP_BODY) {
    do {
    out.write("\r\n");
    out.write("<head profile=\"text/css\">\r\n");
    out.write("\t<META http-equiv=\"Content-Style-Type\" content=\"text/css\" />\r\n");
    out.write("\t<META http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\" />\r\n");
    out.write("\r\n");
    out.write("\t<link rel=\"icon\" type=\"image/gif\" href=\"");
    out.print(request.getContextPath());
    out.write("/modele/images/gtc.gif\" />\r\n");
    out.write("\r\n");
    out.write("\t");
    if (_jspx_meth_layout_skin_0(_jspx_th_layout_html_0, _jspx_page_context))
    return;
    out.write(" \r\n");
    out.write("\r\n");
    out.write("\t<LINK rel=\"stylesheet\" href=\"");
    out.print(request.getContextPath());
    out.write("/modele/modele.css\" type=\"text/css\" />\r\n");
    out.write("\r\n");
    out.write("\t<title>GTC ERREUR</title>\r\n");
    out.write("\r\n");
    out.write("<script type=\"text/javascript\" src=\"");
    out.print(request.getContextPath());
    out.write("/modele/basicScript.js\"></script>\r\n");
    out.write("\r\n");
    out.write("</head>\r\n");
    out.write("\r\n");
    out.write("<body style=\"background:#ffffff\" align=\"left\">\r\n");
    out.write("\r\n");
    out.write("<div style=\"width:60%\" align=\"left\">\r\n");
    out.write("\r\n");
    out.write("<h1>\r\n");
    out.write("<img align=\"left\" src=\"");
    out.print(request.getContextPath());
    out.write("/modele/images/fatalError.gif\" />\r\n");
    out.write("Erreur fatale rencontrée par l'application\r\n");
    out.write("</h1>\r\n");
    out.write("\r\n");
    out.write("<div class=\"box informationLevel2\" style=\"padding:10px; text-align:left\">\r\n");
    out.write("Exception à l'origine : <font style=\"color:red\">");
    out.print(exception.toString());
    out.write("</font><br>\r\n");
    out.write("<br>\n");
    out.write("\tIl peut s'agir :\r\n");
    out.write("\t<ul>\r\n");
    out.write("\t<li>d'un arrêt/relance du serveur</li>\r\n");
    out.write("\t<li>d'un dépassement du délai d'inactivité de la session (fixé à <font style=\"color:green\">");
    out.print(session.getMaxInactiveInterval());
    out.write("</font> secondes)</li>\r\n");
    out.write("\t<li>d'une erreur non gérée par l'application</li>\r\n");
    out.write("\t<li>d'une autre cause inconnue</li>\r\n");
    out.write("\t</ul>\r\n");
    out.write("\t<br>\r\n");
    out.write("\t<font class=\"informationLevel1\">\r\n");
    out.write("\tLes dernières saisies n'ont pu être validées, vous devrez vous reconnecter pour poursuivre.<br>\r\n");
    out.write("\t<br>\r\n");
    out.write("\tSi le problème persiste, veuillez contacter l'administrateur système de votre site.<br>\r\n");
    out.write("\t</font>\r\n");
    out.write("\t<br>\r\n");
    out.write("\t");
    // layout:lien
    clemessy.taglib.LienTag _jspx_th_layout_lien_0 = (clemessy.taglib.LienTag) _jspx_tagPool_layout_lien_url_label_imageUrl_nobody.get(clemessy.taglib.LienTag.class);
    _jspx_th_layout_lien_0.setPageContext(_jspx_page_context);
    _jspx_th_layout_lien_0.setParent((javax.servlet.jsp.tagext.Tag) _jspx_th_layout_html_0);
    _jspx_th_layout_lien_0.setImageUrl("./modele/images/yes.gif");
    _jspx_th_layout_lien_0.setLabel("login.bouton.connecter");
    _jspx_th_layout_lien_0.setUrl(request.getContextPath());
    int _jspx_eval_layout_lien_0 = _jspx_th_layout_lien_0.doStartTag();
    if (_jspx_th_layout_lien_0.doEndTag() == javax.servlet.jsp.tagext.Tag.SKIP_PAGE) {
    _jspx_tagPool_layout_lien_url_label_imageUrl_nobody.reuse(_jspx_th_layout_lien_0);
    return;
    }
    _jspx_tagPool_layout_lien_url_label_imageUrl_nobody.reuse(_jspx_th_layout_lien_0);
    out.write("\r\n");
    out.write("</div>\r\n");
    out.write("\r\n");
    out.write("</div>\r\n");
    out.write("\r\n");
    out.write("\r\n");
    out.write("\r\n");
    out.write("</body>\r\n");
    out.write("\r\n");
    int evalDoAfterBody = _jspx_th_layout_html_0.doAfterBody();
    if (evalDoAfterBody != javax.servlet.jsp.tagext.BodyTag.EVAL_BODY_AGAIN)
    break;
    } while (true);
    }
    if (_jspx_th_layout_html_0.doEndTag() == javax.servlet.jsp.tagext.Tag.SKIP_PAGE) {
    _jspx_tagPool_layout_html_locale.reuse(_jspx_th_layout_html_0);
    return;
    }
    _jspx_tagPool_layout_html_locale.reuse(_jspx_th_layout_html_0);
    } catch (Throwable t) {
    if (!(t instanceof SkipPageException)){
    out = _jspx_out;
    if (out != null && out.getBufferSize() != 0)
    out.clearBuffer();
    if (_jspx_page_context != null) _jspx_page_context.handlePageException(t);
    }
    } finally {
    if (_jspxFactory != null) _jspxFactory.releasePageContext(_jspx_page_context);
    }
    }

    private boolean _jspx_meth_layout_skin_0(javax.servlet.jsp.tagext.JspTag _jspx_th_layout_html_0, PageContext _jspx_page_context)
    throws Throwable {
    PageContext pageContext = _jspx_page_context;
    JspWriter out = _jspx_page_context.getOut();
    // layout:skin
    fr.improve.struts.taglib.layout.SkinTag _jspx_th_layout_skin_0 = (fr.improve.struts.taglib.layout.SkinTag) _jspx_tagPool_layout_skin_includeScript_nobody.get(fr.improve.struts.taglib.layout.SkinTag.class);
    _jspx_th_layout_skin_0.setPageContext(_jspx_page_context);
    _jspx_th_layout_skin_0.setParent((javax.servlet.jsp.tagext.Tag) _jspx_th_layout_html_0);
    _jspx_th_layout_skin_0.setIncludeScript(true);
    int _jspx_eval_layout_skin_0 = _jspx_th_layout_skin_0.doStartTag();
    if (_jspx_th_layout_skin_0.doEndTag() == javax.servlet.jsp.tagext.Tag.SKIP_PAGE) {
    _jspx_tagPool_layout_skin_includeScript_nobody.reuse(_jspx_th_layout_skin_0);
    return true;
    }
    _jspx_tagPool_layout_skin_includeScript_nobody.reuse(_jspx_th_layout_skin_0);
    return false;
    }
    }
    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    349
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 349
    Points : 133
    Points
    133
    Par défaut
    Merci du tuyau, tu sembles bien caler. Peux-tu m'aider à répondre à mon autre topic si tu as du temps ?

    Cordialement,

    hpl76

  10. #10
    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 525
    Points
    9 525
    Billets dans le blog
    1
    Par défaut
    C'est fait
    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. Utiliser variable de session dans header
    Par jcaspar dans le forum Langage
    Réponses: 2
    Dernier message: 20/05/2010, 01h16
  2. Appel variable session dans une class
    Par safisafi dans le forum ASP.NET
    Réponses: 4
    Dernier message: 04/04/2008, 10h59
  3. Variable $_POST dans header('Location:index.php')
    Par adr22 dans le forum Langage
    Réponses: 2
    Dernier message: 02/04/2008, 12h59
  4. recuperer une variable session dans un SQLDataSource
    Par intissar_g dans le forum ASP.NET
    Réponses: 1
    Dernier message: 10/05/2007, 13h29
  5. variable session dans une requête
    Par foxofx dans le forum Langage
    Réponses: 2
    Dernier message: 17/04/2007, 22h26

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