Request em uma Action

6 respostas
hodrigohamalho

Olá,
preciso usar HttpSession em uma Action, só q não to conseguindo inicializar o request sem q ele seja nulo.

Estou usando Struts2, Spring e Hibernate
aqui lá vai o trecho da Action…

@Results ({

	@Result (name=LoginAction.RESULT_SUCESSO, value="/index.jsp"),
	@Result (name=LoginAction.RESULT_INDEX, value="/login/login.jsp")

})
@ParentPackage ("struts-talento")
@Namespace ("/")
public class LoginAction extends ActionSupport{
	private static final long serialVersionUID = 1L;
		
	protected static final String RESULT_SUCESSO = "RESULT_SUCESSO";
	protected static final String RESULT_INDEX = "RESULT_INDEX";
	
	private String nome;
	private String senha;
	
	// ** ACTIONS
	public String carregarInserir() {
		return RESULT_INDEX;
	}
	HttpServletRequest request;
	public String login(){
		if ((getNome().equalsIgnoreCase("talento")) && (getSenha().equals("123"))){
			HttpSession sessao = request.getSession();
			sessao.setAttribute("user", getNome());
			return RESULT_SUCESSO;
		}else
			return RESULT_INDEX;
	}
	// ***	
...
}

Porque eu preciso pegar esse session num Filtro, mas desse jeito que tá ai ela ta parando por NullPointerException…

Espero que possam me ajudar
vlw [:D]

6 Respostas

vanderlanio

pega a sessao pelo contexto como no exemplo abaixo :

ActionContext.getContext().getSession()

:wink:

hodrigohamalho
HttpSession sessao = (HttpSession) ActionContext.getContext().getSession();

Quando executo o tomcat chora com isso:
java.lang.ClassCastException: org.apache.struts2.dispatcher.SessionMap cannot be cast to javax.servlet.http.HttpSession
br.com.stefanini.treinamento.talento.struts.action.LoginAction.login(LoginAction.java:40)

Tem alguma idéia pra fazer esse Cast?

hodrigohamalho

i

vanderlanio

Amigo o cast e para um objeto session .

Session sessao = (Session) ActionContext.getContext().getSession();

:roll:

jyoshiriro

[color=red]Negativo[/color]

ActionContext.getContext().getSession() retorna um java.util.Map

Para trabalhar com objeto HttpSession, faça

ServletActionContext.getRequest().getSession()

jyoshiriro

E, particularmente, acho melhor usar com o objeto Map. Fica mais transparente o acesso aos atributos de sessão.

Só use o objeto do tipo HttpSession se for invalidá-la com o método invalidate() - minha opinião -

Criado 22 de maio de 2009
Ultima resposta 3 de ago. de 2009
Respostas 6
Participantes 3