marcelo_mococa 28 de jun. de 2007
o browser está configurado para aceitar cookies?
lmprates 28 de jun. de 2007
está sim marcelo_mococa !
Tecnoage 28 de jun. de 2007
Num sei cara, mas Só uma súvida, pq vc tah pegando a session assim?
[]s
rafoli 28 de jun. de 2007
lmprates tente mudar a forma de setar a sessao...
Segue um exemplo de como trabalho com sessao....
public String addCart () {
ActionContext context = ActionContext .getContext () ;
List < Product > cart = ( List < Product > ) context .getSession () .get ( "cart" ) ;
if ( cart == null )
{
System .out .println ( "Cart = null" ) ;
cart = new ArrayList < Product > () ;
context .getSession () .put ( "cart" , cart ) ;
}
if ( productId != null ) {
IProductDAO dao = DAOFactory .getInstance () .getProductDAO () ;
product = dao .search ( productId ) ;
System .out .println ( "Product = " + product .getName ()) ;
cart .add ( product ) ;
context .getSession () .put ( "cart" , cart ) ;
}
return "success" ;
}
codigo para obter o elemento da sessao
public String listCart () {
ActionContext context = ActionContext .getContext () ;
products = ( List < Product > ) context .getSession () .get ( "cart" ) ;
return "success" ;
}
Rafael Oliveira
Tecnoage 28 de jun. de 2007
Só complementando…
Vc pode ( e deve) implementar a interface SessionAware;
criar um campo com gets e sets tipo Map Session.
Ae c só faz session.get(qqr coisa.)
acho mais simples…
lmprates 28 de jun. de 2007
e aí pessoal…
obrigado pelas respostas, mas o esquema ainda não tá funcionando.
Será que não pode algum problema de configuração do struts?
já tentei diversas formas de acessar o session e o objeto "usuario" simplesmente some quando vou para outras páginas!
por último a minha classe Login.java está assim:
import java.util.Map ;
import hibernate.dao.UsuarioDAO ;
import hibernate.modelo.Usuario ;
import org.apache.struts2.interceptor.SessionAware ;
import com.opensymphony.xwork2.ActionContext ;
public class Login implements SessionAware {
private Usuario usuario ;
private Map session ;
public Usuario getUsuario () {
return usuario ;
}
public void setUsuario ( Usuario usuario ) {
this . usuario = usuario ;
}
public void setSession ( Map arg0 ) {
this . session = arg0 ;
}
public Map getSession (){
return this . session ;
}
public String execute () throws Exception {
UsuarioDAO dao = new UsuarioDAO ();
int id = dao . login ( getUsuario ());
if ( id & gt 0 ){
setUsuario ( dao . busca ( id ));
getUsuario (). setSenha ( "" );
//ServletActionContext.getRequest().getSession(false).setAttribute("usuario", getUsuario());
/*HttpSession session = ServletActionContext.getRequest().getSession();
session.setAttribute("usuario", getUsuario());
ActionContext.getContext().put(ServletActionContext.SESSION, session);*/
/*HttpServletRequest request = (HttpServletRequest) ActionContext.getContext().get(ServletActionContext.HTTP_REQUEST);
HttpSession sessao = request.getSession();
sessao.setAttribute("usuario", getUsuario());
ActionContext.getContext().put(ServletActionContext.HTTP_REQUEST, request);
*/
/*ActionContext context = ActionContext.getContext();
context.getSession().put("usuario", getUsuario());*/
session . put ( "usuario" , getUsuario ());
return "success" ;
} else {
return "error" ;
}
}
}
Tecnoage 28 de jun. de 2007
quanto a essa linha…
int id = dao.login(getUsuario());
neste momento de onde vem esse usuário?
lmprates 28 de jun. de 2007
o usuário vem do formulário de login, onde o usuário coloca user e password.
o método dao.login retorna o id do usuário.
Caso o usuário não exista, retorna zero.
Tecnoage 28 de jun. de 2007
vc pode postar o código JSP que busca pelo usuário na Session?
lmprates 28 de jun. de 2007
olá Tecnoage
& lt ; s : if test = "usuario == null" & gt ;
& lt ;! -- & lt ; head & gt ;
& lt ; META HTTP-EQUIV = "Refresh" CONTENT = "0;URL=/struts2/pages/expired.html" & gt ;
& lt ;/ head & gt ; -- & gt ;
< br >
Usuário : & lt ; s : property value = "%{usuario.nome}" /& gt ;< br >
& lt ;/ s : if & gt ;
esse é o código que eu utilizo. ele fica em um jsp a parte e faço um include dele nas páginas onde preciso verificar se a sessão é válida.
Tecnoage 28 de jun. de 2007
como vc sabe que este usuário está sendo pego na session? Pega o usuário da session via OGNL na tag if.
assim: #session [usuario]
qqer coisa me add no msn.
Tecnoage 28 de jun. de 2007
nossa meu descupa, é #session [‘usuario’]
lmprates 28 de jun. de 2007
Tecnoage:
como vc sabe que este usuário está sendo pego na session? Pega o usuário da session via OGNL na tag if.
assim: #session [usuario]
qqer coisa me add no msn.
Agora funcionou…tinha esquecido desse lance.
obrigado.
Tecnoage 28 de jun. de 2007
então cara, mas mesmo assim é estranho, se eu não estou enganado (por favor alguém me corrija) a OGNL busca objeto que vc indica em vários escopos se não encontrar no escopo padrão… Isso q me encucou agora… mas se deu certo, blz!
rafoli 28 de jun. de 2007
Olha um exemplo do .java que mandei e o JSP
o JAVA
ActionContext context = ActionContext.getContext();
List<Product> cart = new context.getSession().get("cart");
context.getSession().put("cart", cart);
o JSP
<% if ( request . getSession () . getAttribute ( "cart" ) == null ) out . print ( "0" );
else
{
ArrayList listProducts = ( ArrayList ) session . getAttribute ( "cart" );
out . print ( listProducts . size ());
} %>
Na declaração da classe é necessário somente...aqui funciona q é uma blz...estou usando pra adicionar produtos no carrinho de compras no site de um cliente
import com.opensymphony.xwork2.ActionContext ;
import com.opensymphony.xwork2.ActionSupport ;
import java.util.ArrayList ;
public class ProductAction extends ActionSupport {
Rafael Oliveira