Olá Pessoal!
No meu trampo, temos um site que vendemos pros nossos clientes (Um portal de aplicações). Uma das tecnologias que usamos é JSF e, recentemente, andamos espetando algo de AJAX também.
Eu tenho uma classe que, basicamente, cria e lê um determinado cookie. Aqui segue os snipets principais:
import java.util.Arrays;
import java.util.Map;
import javax.faces.component.html.HtmlCommandButton;
import javax.faces.context.FacesContext;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ShortcutMgr extends PageCodeBase {
private Cookie cookies[];
private HttpServletRequest request;
private HttpServletResponse response;
public ShortcutMgr(FacesContext context) {
context = context == null ?
FacesContext.getCurrentInstance():
context
;
request = (HttpServletRequest) context.getExternalContext().getRequest();
response = (HttpServletResponse) context.getExternalContext().getResponse();
}
public void add() {
...
cookie = new ShortcutCookie(read());
...
write(cookie);
...
}
...
private Cookie read() {
...
}
private void write(ShortcutCookie cookie){
response.addCookie(cookie);
}
}
ShortcutCookie é uma classe minha que herda de Cookie. Os unicos sets de Cookie que eu aciono em seu construtor são setValue e setMaxAge(passo -1).
O problema que me ocorre, é que o fluxo do programa passa por esta classe, executa tudo bunitinho (acompanhei com o debug do Eclipse), só que no final das contas, o meu cookie não aparece lá pro browser.
A título de informação:
Estou aplicando AJAX no meu site. Mando uma “requisição AJAX” pro meu servidor, depois um PhaseListener meu captura a requisição e este, à sua maneira, chama, por exemplo, o método add() da classe ShortcutMgr.
Gostaria de saber o que estou fazendo de errado ou o que estou desconsiderando, esquecendo, etc…
Agradeço antecipadamente!