2016-04-15 4 views
0

Je javascript qui appelle une fonction pour définir la valeur de la session commewindow.location.reload (true) effacera HttpSession?

ci-dessous est le code client:

<a id="sampleId "href="javascript:confirmTechSimulationSwitch('testLink'); 

function confirmTechSimulationSwitch(){ 
var url = window.location.protocol + "//" + window.location.host + "/dummy-proj/Toggle.jsp"; 
var xmlHttpReq = new XMLHttpRequest(); 
    if (window.XMLHttpRequest) { 
     xmlHttpReq = new XMLHttpRequest(); 
     xmlHttpReq.open("POST",url, false); 
     xmlHttpReq.send(null); 
    } 
    if (xmlHttpReq.readyState == 4) { 
      if (xmlHttpReq.status == 200){ 
       var newResponse =xmlHttpReq.responseText.slice(0,4); 
       if(xmlHttpReq.responseText !=null && newResponse =='true'){ 
      window.location.reload(true); 
       } 
      } 
      } 

Dans ce Toggle.jsp j'ai un methood:

<% 
System.out.println("inside jsp page"); 

     session.setAttribute("abc","true"); 
     request.setAttribute("abc","true"); 
     request.getSession().setAttribute("abc","true"); 
System.out.println(" abc123........ "+session.getAttribute("abc"));//prints true 
System.out.println("abc456....... "+request.getAttribute("abc"));//prints true 
System.out.println("abc789......."+request.getSession().getAttribute("abc"));//prints true 
    } 
%> 

maintenant j'essaye d'aller chercher les valeurs de cette session après le rechargement de page de la même application dans la méthode différente comme ci-dessous:

public void Test(HttpServletRequest request){ 
HttpSession session = request.getSession(); 
session.getAttribute("abc");// prints null 
request.getAttribute("abc");//prints null 
request.getSession().getAttribute("abc")//prints null 
    } 

à partir d'une autre méthode java Test. Je l'obtiens comme nul. quelqu'un peut me suggérer s'il vous plaît comment obtenir la valeur de session qui est définie pour abc même après rechargement de la page?

+0

Afficher le code côté client. Si vous rechargez la page, la demande en vol du gestionnaire de clics peut être annulée par le navigateur. Ne rechargez pas avant que cette demande (et son travail de session) est terminée. Aussi, qu'est-ce qu'un "autre programme java"? Ne fait pas partie de la même application web (alors il n'aura pas accès à la session)? – Thilo

+0

J'ai ajouté le code côté client, regardez –

+0

vérifiez que 'trainingAvailableFlag' vérifie s'il s'agit de' true' ou '1'. Ajoutez simplement un autre cas dans la réponse ajax et vérifiez la réponse. – Santhucool

Répondre

0

D'abord, répondons au titre: Non, cela n'invalide pas la session du serveur, votre erreur n'est pas ici.

Deuxièmement: à quoi cela sert-il?

if(res !=null && res =='true'){ 
    var res="true"; 
    [..] 
} 

Il n'y a pas de point de le faire

Enfin, nous aurons besoin de plus d'informations afin de résoudre définitivement le problème. Comme la condition qui provoque l'exécution de votre javascript, ou tout le HTML autour du javascript s'il est inclus dans la page.

+0

la fonction javascript est exceuted sur le clic du lien. nous avons juste un lien sur le clic du lien j'ai cette fonction de confirmTechSimulationSwitch invoquée et pour si (res! = null && res == 'vrai') { var res = "vrai"; [..] } J'ai édité la question s'il vous plaît –

+0

Mais quel est le point avec var res = "true", puis window.location.reload()? Puisque vous rechargez votre page, tout le contexte javascript sera supprimé. Si vous souhaitez charger la session en cours de l'utilisateur, vous devez le faire lors du chargement de la page. – Walfrat

+0

J'ai ajouté pour un but logique supplémentaire qui n'a pas d'importance pour cette variable en cours avec window.location.reload –