Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Variabile di sessione

    Ciao a tutti. É solo da qualche giorno che sto usando jsp e ho un problema che proprio non riesco a risolvere.

    Vorrei sapere come posso fare per passare un valore prelevato da un file xml in una variabile di sessione (poi quel valore dovrò caricarlo in un bean).

    Prelevo il mio elemento con <x:set var="elemento" select="$doc//elemento"/>
    (dove doc sta per la varibile di parsing)

    Adesso come faccio a metterlo in una var di sessione?
    Ho provato a fare in questo modo <%session.setAttribute("nome",$elemento)%> ma tomcat mi da errore.

    Ho provato a fare anche in quest' altro modo:
    <x:set var="us" scope="session" select="$doc//username"/>
    <c:set var="user" scope="session" value="${sessionScope.us}"/ >
    (c è la taglib core)
    ma neanche così va..qualcuno potrebbe darmi una mano?

    Grazie Mille

  2. #2
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Setta lo scope a session direttamente quando fai la prima <x:set /> (Quella che preleva il valore).

  3. #3
    Ho provato ma non cambia nulla purtroppo...cmq grazie.
    Il problema non è tanto settare una variabile di sessione ma accedere al suo valore

    Dopo che faccio:
    <x:set var="us" scope="session" select="$doc//username" />
    Come faccio a leggere il valore di us? (senza utilizzare azioni di x però...)

    Ho provato anche a fare <%=session.getAttribute("us")%> ma mi restituisce [[username: null]]
    Qualche altra idea?

  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    230
    allora poichè non so come si estrae una variabile da un file xml, ti faccio vedere solo come inserire un oggetto dalla sessione ed estrarlo.
    Supponi che l'oggetto è una stringa allora:
    String car = "panda";
    <%session.setAttribute("car",car);%>

    nota che avrei potutto scrivere anche
    <%session.setAttribute("macchina",car);%> ossia le due "etichette" car e macchina non devono necessariamente coincidere col nome dell'oggetto che passi alla sessione, ti servono per estrarre l'oggetto di sessione e per ricordati a quale oggetto sono associate.
    Per estrarre l'oggetto della sessione
    String temp;
    temp = (String)session.getAttribute("car");
    nota che è necessario fare il casting all'oggetto corripondente a "car" che nel nostro esempio è una String

    se ad esempio avvessimo usato l'istruzione
    <%session.setAttribute("macchina",car);%> per estrarre l'oggetto
    temp = (String)session.getAttribute("macchina");

    Ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Dopo che faccio:
    <x:set var="us" scope="session" select="$doc//username" />
    Come faccio a leggere il valore di us? (senza utilizzare azioni di x però...)
    Apparte che non vedo perche' tu voglia fare questo mescolone. Usi le taglibraries per settare, le puoi usare anche per recuperare la variabile. Comunque
    codice:
    <%=session.getAttribute("us")%>
    e' il modo giusto, se ti restituisce null, probabilmente hai sbagliato la select. del tag <x:set>.

  6. #6
    Ciao,

    di solito quando voglio fare azioni specifiche alla creazione di una sessione, evito di farlo dentro le pagine JSP (che, in un modello MVC "pulito" dovrebbero occuparsi di presentare i dati e basta!).

    Un modo appropriato per fare queste inizializzazioni è usare una classe che implementa l'interfaccia HttpSessionListener (vedi http://java.sun.com/j2ee/sdk_1.3/tec...javax/servlet/ http/HttpSessionListener.html) e sulla sessionCreated fare quel che devi fare.

    Per un articolo su come usare questo tipo di interfaccia vedi, per esempio, http://www.stardeveloper.com/article...html?article=2 001111901&page=1

    ciao
    Ivan Venuti
    Vuoi scaricare alcuni articoli sulla programmazione, pubblicati su riviste di informatica? Visita http://ivenuti.altervista.org/articoli.htm. Se vuoi imparare JavaScript leggi il mio libro: http://www.fag.it/scheda.aspx?ID=21754 !

  7. #7
    Per prima cosa grazie a tutti per la vostra disponibilità!
    Nonostante i vostri suggerimenti non sono riuscito a risolvere il problema.

    Il fatto è che se io setto una variabile con l'azione set di x e con scope="session", questa non riesco a leggerla con nessun'altra azione jsp ne non con <xut>. Infatti facendo:

    <%=session.getAttribute("us")%> o

    <cut value="${sessionScope.us}"/>

    mi viene stmapato null..e non ho sbagliato a prelevare dall' xml, su questo sono sicuro..

    Cmq a me quello che interessa è prelevare un valore da un xml per settare una proprietà di un bean con quel valore e l'unico modo che mi viene in mente è questo:
    <jsp:setProperty ... value="<%=session.getAttribute("us")%>">
    ma chiaramente non funziona.

    Avete qualche altra idea in proposito?
    Grazie
    Ciao

  8. #8
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Non ha senso, l'oggetto session e' uno, tutto quello che salvi in session finisce nello stesso posto sia se usi i tag c, sia se usi i tag x, sia se usi scriplet JSP. Ci dev'essere un altro motivo.
    Come mai in $doc//username ci sono 2 slash?

  9. #9
    Sono daccordissimo con te: non ha senso...non capisco proprio come faccia a non funzionare.

    il motivo per cui ci sono 2 slash è che l'elemento username non è il root dell' xml, ma ripeto sono sicuro che il problema non sta lì perchè se faccio

    <xut select="$sessionScope:us"/> mi stampa il contenuto dell' elemento

    se invece faccio <cut value="${sessionScope.us}"/> mi stampa null..

  10. #10
    Utente di HTML.it
    Registrato dal
    Apr 2007
    Messaggi
    906
    Ok, mistero svelato. Ho fatto qualche prove e' salva correttamente in session l'oggetto che pero' e' di tipo JSTLNodeList. Stampando un oggetto di questo tipo nella maniera classica non ottieni il valore del tag, ma quella stampa che hai visto anche tu ([[username: null]]). Per ottenere la stringa in esso contenuta devi modificare leggermente la select usando la funzione string() di XPath.

    <x:set var="us" scope="session" select="string($doc//username)"/>
    <jsp:setProperty ... value="${sessionScope.us}">

    Prova cosi' che dovrebbe andare.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.