Usar String e List em sessão

Olá pessoal,
sei que há muitos exemplos de sessão na internet,
inclusive no GUJ,
no entanto estou com uma dúvida que ainda não
encontrei solução em lugar algum.

Estou desenvolvendo um sistema de avaliação
onde cada avaliador avaliará suas determinadas disciplinas.
As disciplinas estão no banco de dados,
e inicialmente eu estava colocando elas em um
ArrayList de Strings estático,
porém, quando duas pessoas fazem login ao
mesmo tempo, uma avalia as disciplinas da outra,
portanto, gostaria de colocar esse arralist como atributo da sessão
de cada usário, porém não estou utilizando sessão no sistema,
e não encontrei uma forma de colocar esse ArrayList na sessao,
uma vez que só estou tratando os dados nas classes do sistema.

Alguém poderia me ajudar a
colocar esse bendito Array na sessão???

Uai, não é só usar session.getAttribute e session.setAttribute?

Certo,
mas eu estou utilizando o
struts2 e não sei de que
forma posso acessar o session,
sem que o problema permaneça,

entende minha dúvida?
Você não poderia me mostrar um
trecho do código .java?

[quote=Carlos_Mello]Certo,
mas eu estou utilizando o
struts2 e não sei de que
forma posso acessar o session,
sem que o problema permaneça,

entende minha dúvida?
Você não poderia me mostrar um
trecho do código .java?[/quote]
Conta pra gente o que você está utilizando.

estou usando varias actions,
a primeira eu verifico se o usuário
existe no banco de dados e se ele está devidamente cadastrado,
em caso positivo, eu setto uma Lista de Strings com
as disciplinas que ele vai avaliar.

Essa lista é estática,
por isso está dando conflito.

Se ela não for estática, eu não tenho como acessá-la
de outra action, a menos que ela esteja na sessao,
porem não sei como colocá-la na sessao, nem como tirá-la
de lá.

[quote=Carlos_Mello]estou usando varias actions,
a primeira eu verifico se o usuário
existe no banco de dados e se ele está devidamente cadastrado,
em caso positivo, eu setto uma Lista de Strings com
as disciplinas que ele vai avaliar.

Essa lista é estática,
por isso está dando conflito.

Se ela não for estática, eu não tenho como acessá-la
de outra action, a menos que ela esteja na sessao,
porem não sei como colocá-la na sessao, nem como tirá-la
de lá.[/quote]

Ops, foi mal, eu li errado… havia lido “não estou usando o struts 2”
Para acessar a sessão no Struts 2, faça assim (pelo menos aqui fazemos assim, não sei se é a unica maneira)

Map session = (Map) ActionContext.getContext().get( "session" ); session.put( key, value ); //adiciona na sessao session.remove( key ); //remove da sessao

você quer que a mesma lista esteja disponível para todas as requisições ?

Então a lista não deve ser um atributo da sessão e sim do servlet context.

Mas mesmo assim, isso que você quer fazer está estranho.

Quando eu quiser recuperar, tenho que fazer:

  1. Map session = (Map) ActionContext.getContext().get( “session” );
  2. session.get( key, value );

E o cast tá dandop erro, por que seria?

  1. Map<String,List> session = (Map) ActionContext.getContext().get( “session” );
  2. session.put( key, value );

[quote=Carlos_Mello]Quando eu quiser recuperar, tenho que fazer:

  1. Map session = (Map) ActionContext.getContext().get( “session” );
  2. session.get( key, value );

E o cast tá dandop erro, por que seria?

  1. Map<String,List> session = (Map) ActionContext.getContext().get( “session” );
  2. session.put( key, value ); [/quote]

Meu exemplo está sem uso de generics.

Ssalgado,
de que outra forma eu poderia fazer isso, sem
alterar o meu banco de dados e etc?

To utilizando o exemplo do fiaux e ta dando certo, por enquanto, vlw.

Nao sei se o tipo retornado seria “Map<String,List><String>>”, acho que faria mais sentido “Map<String, Serializable >” (chute meu).

ao invés disso não seria melhor tentar algo como:

List&lt;String&gt; list = (List&lt;String&gt;) context.getSession().get(&quot;nome do seu attributo de sessão&quot;);

O problema permanece, provavelmente por que eu não estou iniciando
uma sessão específica para cada usuário.

Como eu faço para ter acesso ao request através do struts2,
para poder diferenciar cada usuário?