[RESOLVIDO] - Request e Response sem servlet

5 respostas
bsl.lacerda

Bom dia pessoal!
Teria alguma forma de utilizar HttpServletRequest em um método que não seja de um Servlet?
Este método não pode receber parâmetros.
Neste método eu quero pegar os cookies.

Cookie [] cookies = getRequest().getCookies();

A classe é um bean do Spring

Valeu.

5 Respostas

danieldestro

Não sei muito a respeito do "bean" do Spring, mas você pode fazer uma solução ad hoc, vulgo gambiarra.

ServletFilter -> Joga o request em um ThreadLocal
Bean -> Pega o request do ThreadLocal

Exemplo (parcial):

public class RequestTransporter {
  private static final ThreadLocal<HttpServletRequest> tl = new ThreadLocal<HttpServletRequest>();

  public static void set( HttpServletRequest req ) {
    tl.set(req);
  }

  public static HttpServletRequest get( ) {
    return tl.get();
  }
}

No Filter:

RequestTransporter.set(request);

No seu Bean:

request = RequestTransporter.get();

É acoplamento indevido, mas...

bsl.lacerda

Descobri.

FacesContext context = FacesContext.getCurrentInstance();		 
HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();		
Cookie [] cookies = request.getCookies();

Obrigado!

danieldestro

Ah tá! Só faltou você dizer que era um backing bean do JSF… hehehehe :lol:

bsl.lacerda

Por que não é um backing bean. :lol:

danieldestro

Mas é JSF. :wink:

Criado 3 de julho de 2009
Ultima resposta 3 de jul. de 2009
Respostas 5
Participantes 2