Objeto no scopo de sessao esta desaparecendo

0 respostas
O
Bom dia pessoal. Estou com um problema que é o seguinte: Tenho uma aplicacao jsp + struts 1.x que tem o seguinte cenario: Minha pagina JSP contem uma tag que envia como parametro um codigo para ser realizado uma consulta no banco de dados.
<html:link action="/pages/licitacao/proposta/EnviarProposta.do?idLicitacao=${pregao.id}">Enviar Proposta</html:link>
Tudo que estiver dentro desse caminho (/pages/licitacao/proposta/*) meu filtro vai entrar em acao e vai pedir para o usuario se logar, ou seja a partir desse link que apontei para a action o controller vai requisitar o filtro e vai pedir para logar, assim que ele se logar ele vai para a Action que retira o parametro que foi enviado pela tag, efetua a consulta e armazena o objeto retornado pela consulta no scopo da sessao, para depois esse objeto que foi passado no scopo da sessao ser impresso no jsp. Acontece que na primeira vez que acesso o sistema esse objeto que foi passado no scopo da sessao esta null, mas eu debuguei a aplicacao e no meu servlet ele esta correto, ou seja, a consulta no banco ocorre normalmente. E se eu fechar a aba e depois acessar denovo ele funciona. O que pode ser? Vou passar o codigo do filtro e do action... Quando o cliente clica na tag
<html:link action="/pages/licitacao/proposta/EnviarProposta.do?idLicitacao=${pregao.id}">Enviar Proposta</html:link>
ele vai para :
<action
 path="/pages/licitacao/proposta/EnviarProposta"
 type="org.springframework.web.struts.DelegatingActionProxy">
 <forward
 name="success"
 path="/pages/licitacao/proposta/EnviarProposta.jsp"/>
 <forward
 name="failure" 
 path="/pages/errors/ErrorEnvioProposta.jsp"/>
 <forward 
	name="errorConsultaPregaoEnvioProposta"
	path="/pages/errors/ErrorEnvioProposta.jsp"/>
</action>
Que verifica que precisa se logar:
<filter-mapping>
   <filter-name>Acesso</filter-name>
   <url-pattern>/pages/licitacao/proposta/*</url-pattern>
</filter-mapping>
Veja o filtro:
public class LoginAcesso implements Filter {
	
	private FilterConfig config;
	
	public void destroy() {
		
		
	}

	public void doFilter(ServletRequest req, ServletResponse resp,
			FilterChain chain) throws IOException, ServletException {
		
		HttpSession session = ((HttpServletRequest)req).getSession();
		Usuario user = (Usuario) session.getAttribute("usuario");
			
				
		if (user == null) {
			((HttpServletRequest)req).setAttribute("msg", "Senhor Usuario, voce nao esta logado, favor entrar com login e senha respectivos");
			RequestDispatcher view = ((HttpServletRequest)req).getRequestDispatcher("/pages/licitacao/Login.jsp");
			view.forward(req, resp);
		} else {
			chain.doFilter(req, resp);
		}
		
	}

	public void init(FilterConfig config) throws ServletException {
		this.config = config;
		
	}

}
E o meu Action que efetua a consulta:
public class EnviarPropostaAction extends Action {

	private PregaoService pregaoService;

	public void setPregaoService(PregaoService pregaoService) {
		this.pregaoService = pregaoService;
	}
	
	
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		// TODO Auto-generated method stub
		
		ActionMessages messages = new ActionMessages();
		Pregao pregao = null;
		try {
			pregao = this.pregaoService.consultaPorIdPregao(Pregao.class, Long.parseLong(request.getParameter("idLicitacao")));
			HttpSession session = request.getSession();
			session.setAttribute("pregao", pregao);
			if (session == null) {
				System.out.println("novo");
			}
		} catch (Exception e) {
			messages.add("errorPregaoEnvioPropostaVazio", new ActionMessage("error.envio.pregao.proposta.vazio"));
			saveErrors(request, messages);
			return mapping.findForward("errorConsultaPregaoEnvioProposta");
		}
		if (messages.isEmpty()) {
			return mapping.findForward("success");
		} else {
			return mapping.findForward("failure");
		}
		
	}
}

Se alguem me ajudar ficarei grato.

Criado 10 de junho de 2008
Respostas 0
Participantes 1