Pessoal,
Espero q consiga transmitir o meu problema para vcs…
Abaixo, está a classe GerenciarVisitas() o metodo mostrarBanner que tem como objetivo, escolher uma exibicao do banner e retornar uma string urlImagem populando a exibicao…
package sgb.nucleo.gerenciadores;
import java.util.Collection;
import sgb.nucleo.exibicao.Banner;
import sgb.nucleo.exibicao.Exibicao;
import sgb.nucleo.exibicao.SeletorBanner;
import sgb.nucleo.exibicao.Site;
import sgb.nucleo.persistencia.BannerDao;
import sgb.nucleo.persistencia.Dao;
import sgb.nucleo.persistencia.ErroArmazenamentoException;
import sgb.nucleo.persistencia.ExibicaoDao;
import sgb.nucleo.persistencia.SiteDao;
public class GerenciarVisitas {
// Criando as constantes necessárias
public static String FIGURA_PADRAO = "http://127.0.0.1:8080/sgb.gif";
public static String DESTINO_PADRAO = "0;";
public static String REDIRECIONADOR = "http://localhost/sgb/visoes/redirecionar.jsp?cd=";
public static String ERRO_CLICK = "http://127.0.0.1:8080/erro.sgb";
private Banner banner = new Banner();
private Exibicao exibicao = new Exibicao();
public GerenciarVisitas() {
banner.setUrlImagem(FIGURA_PADRAO);
banner.setUrlDestino(DESTINO_PADRAO);
exibicao.setBanner(banner);
}
public String mostrarBanner(String codigoSite) {
/**
* Este método *NÃO* pode gerar um erro, do contrario a imagem não vai aparecer
* (e provavelmente o layout do cliente vai ser destruído).
* Se efetivamente acontecer algo errado, devolva uma URL de uma imagem default, mas devolva algo!
* */
String resposta = FIGURA_PADRAO;
try {
Dao daoSites = new SiteDao();
// Descubra qual site foi acessado baseado no codigo dele
Site siteAcessado = new Site();
siteAcessado.setCodSite(Integer.parseInt(codigoSite));
siteAcessado = (Site) daoSites.buscar(siteAcessado);
// Pegue todas as exibições cadastradas para este site
ExibicaoDao daoExibicoes = new ExibicaoDao();
Collection exibicoesDoSite = daoExibicoes.buscarPorSite(siteAcessado);
Exibicao escolhido = SeletorBanner.escolher(exibicoesDoSite);
if (escolhido != null) {
exibicao.setCodExibicao(escolhido.getCodExibicao());
banner = escolhido.getBanner();
resposta = escolhido.getBanner().getUrlImagem();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
return resposta;
}
}
public String getUrlDestino(String codigoBanner) {
String resposta = ERRO_CLICK;
try {
Dao dao = new BannerDao();
banner = new Banner();
banner.setCodBanner(Integer.parseInt(codigoBanner));
banner = (Banner) dao.buscar(banner);
resposta = banner.getUrlDestino();
} catch (Exception e) {
e.printStackTrace();
}
return resposta;
}
public String getUrlDestino() {
return REDIRECIONADOR + banner.getCodBanner();
}
public void acumularClick(Exibicao exibicao) throws ErroArmazenamentoException {
ExibicaoDao dao = new ExibicaoDao();
dao.aumentarClick(exibicao);
}
}
Meu problema começa agora:
public class MostrarBannerAcao implements Acao, DesabilitarSeguranca {
public void executar(Requisicao req, Resposta resp) throws MvcException {
RespostaHttp resposta = (RespostaHttp) resp;
RequisicaoHttp requisicao = (RequisicaoHttp) req;
HttpServletRequest request = requisicao.getHttpRequest();
HttpServletResponse response = resposta.getHttpResponse();
String codSite = (String) requisicao.getAtributo("codSite");
//Instanciar o Gerenciador...
Exibicao exibicao = new Exibicao();
Banner banner = new Banner();
GerenciarVisitas gerenciador = new GerenciarVisitas();
banner.setUrlImagem(gerenciador.mostrarBanner(codSite));
banner.setUrlDestino(gerenciador.getUrlDestino());
//exibicao = (Exibicao) gerenciador;
// Guarda a exibicao em request
request.setAttribute("exibicao", exibicao);
redirecionar("/visoes/mostraBanner.jsp", request, response);
}
private void redirecionar(String jspAlvo, HttpServletRequest req, HttpServletResponse resp) {
try {
req.getRequestDispatcher(jspAlvo).forward(req, resp);
} catch (Exception e1) {
//Não deveria chegar aqui
e1.printStackTrace();
}
}
}
Preciso passar a minha jsp, o meu obj exibicao populado na qual este possua um objeto banner tb populado (exibicao.getBanner().getUrlDestino() ) vindo do GerenciarVisitas mas há algo errado na minha implementacao q n consigo detectar… ja debuggei e nada…
Se for possivel, gostaria q me ajudassem!
Obrigado,
Beto.