2014-05-17 5 views
5

Ho alcuni attributi di sessione salvati. Ho una pagina jsp su cui viene effettuata una chiamata a un servlet. Questo servlet aggiorna una variabile di sessione ma non riesco a vedere il riflesso di queste modifiche nella mia guida di jsp.Pls.Come aggiornare l'attributo di sessione

Nel mio servlet

List<DriverList> abc = dao.getABC(); 
    request.getSession().removeAttribute("abc"); 
    request.getSession().setAttribute("abc", abc); 

Nel mio jsp

function update() 
{ 
    var url = "updateServlet"; 
    var req = $.ajax({ 
    type: 'GET', 
    url: url, 
    cache: false, 
    type: "GET", 
    success: function() 
    { 
     latlng = []; 
     latlng = [<c:forEach var="test" items="${abc}"> 
        [<c:out value="${test.latitude}"/>,<c:out value="${test.longitude}"/>,"<c:out value= "${test.name}" />",<c:out value="${test.cellNo}"/>], 
       </c:forEach> ]; 

    }, 
    error: function (status) { 
     } 

    }); 

} 

Il valore di "$ {} abc" è uguale a prima. Come ottenere il nuovo valore?

Il flusso esatto -
1- quando il servlet di accesso è denominato valore abc quando viene impostato sessionAttribute. 2- Ora questo reindirizza a base.jsp. Io uso abc per la prima volta. Ora dopo ogni 30 secondi viene chiamata questa funzione update(). Questa funzione di aggiornamento chiama un servlet tramite ajax dove viene aggiornato l'attributo di sessione abc. 3 - Nella funzione di successo di una richiesta Ajax, voglio usare questo nuovo valore abc ma recuperare di nuovo quello vecchio.

+0

Si prega di descrivere il flusso delle vostre richieste. –

+0

Aggiunto il flusso. – Vaishali

risposta

3

di accedere alla variabile abc nel tentativo JSP:

${sessionScope.abc} 

Si noti inoltre che la rimozione prima impostazione è solitamente ridondante. Quindi:

request.getSession().removeAttribute("abc"); 
request.getSession().setAttribute("abc", abc); 

può semplicemente diventare:

request.getSession().setAttribute("abc", abc); 
+0

attualmente sto impostando questo attributo una volta che l'utente si è loggato. Questo è il motivo per cui ho usato removeAttribute. Anche io sono in grado di vedere il valore in jsp ma quando faccio una chiamata al servlet (cioè chiamando la funzione di aggiornamento del mio js) mi aspetto che il valore venga aggiornato e dopo che uso "$ abc" voglio abc con il nuovi valori – Vaishali

+0

L'impostazione di un valore con la chiave 'abc' nella mappa di sessione sovrascriverà qualsiasi valore precedentemente associato al tasto' abc'. – cherouvim

+0

Ok, rimuoverò removeAttribute, ma il problema è sempre lo stesso – Vaishali

0

Ho avuto problemi simili. Si è scoperto che quando si utilizza

HttpSession 

oggetto nel controller, non dovrebbe essere annotato utilizzando

@SessionAttributes