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

Portails Java Discussion :

Préférences et session


Sujet :

Portails Java

  1. #1
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Points : 111
    Points
    111
    Par défaut Préférences et session
    Bonjour,

    Je développe actuellement une portlet sous Liferay 6.0.3 permettant de faire de la restitution. (Introduction : ça c'est fait ! )

    Mon problème est le suivant :
    Dans mon mode view, j'ai une liste déroulante. Quand je change la sélection, j'effectue une requête sur le serveur pour afficher un tableau suivant des données, donc en ajax, qui fonctionne parfaitement !

    J'essaie maintenant de faire à peu près la même chose, c'est-à-dire une requête vers le serveur sur l'événement onchange pour sauvegarder la sélection dans les préférences de la portlet.

    Voici mon code : (regarder la fonction updatePreference)

    requête ajax :

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    function updateTableResults(envId, appName) {
        if (envId.value != 0) {
            var url = rsJSPFolder+'/dynamic_request/dynamic_request_results_services_tests.jsp';
            url = url+'?idEnv='+envId.value+'&nameApp='+appName;
            var controlId = document.getElementById(rsIdTable);
            rsInit(url, controlId);
        }
    }
     
    function updatePreference(preferenceName, preferenceValue) {
        if (preferenceName != undefined &&
            preferenceValue != undefined) {
     
            var url = rsJSPFolder+'/dynamic_request/setPreference.jsp';
            url = url+'?preferenceName='+preferenceName+'&preferenceValue='+preferenceValue;
            rsInitUP(url);
        }
    }
     
    function rsInit(url, controlId) {
        var xhr = GetXhr();
        if (xhr == null) {
            alert("Your browser doesn't support XMLHttpRequest!");
            return;
        }
     
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && xhr.status == 200) {
                // évaluation du message JSON (eval())
                var tableauValeurs = eval("(" + xhr.responseText + ")");
     
                // Si la requête s'est bien effectuée, on met à jour la liste des méthodes
                updateTable(controlId, tableauValeurs);
            }
        };
        xhr.open('GET',url,true);
        xhr.send(null);
    }
     
    function rsInitUP(url) {
        var xhr = GetXhr();
        if (xhr == null) {
            alert("Your browser doesn't support XMLHttpRequest!");
            return;
        }
     
        xhr.onreadystatechange = function() {
            if (xhr.readyState == 4 && xhr.status == 200) {
                var tableauValeurs = eval("(" + xhr.responseText + ")");
            }
        };
        xhr.open('GET',url,true);
        xhr.send(null);
    }
     
    function GetXhr() {
        var xhr;
        try {
            // Firefox, Opera 8.0+, Safari
            xhr = new XMLHttpRequest();
        } catch (e) {
            // Internet Explorer
            try {
                xhr = new ActiveXObject('Msxml2.XMLHTTP');
            } catch (e) {
                xhr = new ActiveXObject('Microsoft.XMLHTTP');
            }
        }
        return xhr;
    }
    ma jsp appelée :
    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
    <%@ taglib uri="http://java.sun.com/portlet_2_0" prefix="portlet" %>
     
    <portlet:defineObjects />
     
    <%
    response.setHeader("Cache-Control","no-cache"); //HTTP 1.1 
    response.setHeader("Pragma","no-cache"); //HTTP 1.0 
    response.setDateHeader ("Expires", 0); //prevents caching at the proxy server
     
    String name = request.getParameter("preferenceName");
    String value = request.getParameter("preferenceValue");
     
    javax.portlet.PortletPreferences prefs = renderRequest.getPreferences();
    prefs.setValue(name, value);
    prefs.store();
     
    //request.setAttribute(name, value);
    //String testvalue = (String)request.getAttribute(name);
     
    //out.print("[{\"text\":\""+name+"\", \"value\": \""+value+"\"}]");
    %>
    Ceci ne fonctionne pas... J'ai donc essayé avec une session avec le code en commentaire, qui ne fonctionne pas non plus... Ou plutôt, quand je fais un getValue dans la même jsp et que je le retourne au format JSON, ça fonctionne, mais si je fais le getValue dans ma portlet, ça ne fonctionne pas, donc je suppose que la jsp de ma portlet et celle de ma requête ne sont pas dans la même session mais pourquoi et comment régler ce problème ?

    De préférence, je préfèrerais le faire avec les préférences de la portlet (première solution exposé ici), mais si une solution fonctionnelle existe en session je suis bien évidemment preneur !

  2. #2
    Membre régulier
    Inscrit en
    Avril 2010
    Messages
    200
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 200
    Points : 111
    Points
    111
    Par défaut
    Personne ne peut m'aider sur mon problème ?
    Je souhaiterais vraiment le résoudre !
    Si vous avez un moyen autre que ce que j'ai actuellement, je suis preneur !

    Je rappelle rapidement ce que je voudrais faire.
    Dans ma portlet, j'affiche un tableau avec de l'ajax, seulement quand je recharge la page entière, mon tableau disparaît (ce qui est normal), mais je voudrais qu'il reste affiché !

    Comment puis-je faire ?

Discussions similaires

  1. [Servlets - JSP] Problème de session
    Par the java lover dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 28/11/2011, 09h54
  2. [JSP][session] perte de session et sendRedirect
    Par blaz dans le forum Servlets/JSP
    Réponses: 6
    Dernier message: 30/03/2007, 09h32
  3. Réponses: 12
    Dernier message: 24/09/2003, 15h26
  4. [XMLRAD] session
    Par jml dans le forum XMLRAD
    Réponses: 4
    Dernier message: 17/12/2002, 09h24

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