Olá,
Tenho uma aplicacao com um carrinho de compras implementado, funciona normalmente no FF e no GC, porém no IE9 as variaveis de sessão são setadas mas não são apresentadas ao carregar a página. somente quando eu adiciono um item no carrinho.
No FF e GC eu consigo adicionar dois itens iguais e no IE9 também não dá.
Abaixo seguem os códigos:
Action para adicionar ao carrinho:
[code]package action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import itens.cd.Cd;
import itens.cd.CdDAO;
import java.util.ArrayList;
import java.util.Map;
import org.apache.struts2.convention.annotation.Action;
import org.apache.struts2.convention.annotation.Result;
public class LojaAddCarrinho extends ActionSupport {
private Cd cd;
private ArrayList<Cd> cds = new ArrayList<Cd>();
@Action(value = "addCarrinho", results = {
@Result(name = "ok", location = "loja/carrinho.jsp")
})
@Override
public String execute() {
Map session = ActionContext.getContext().getSession();
if (ActionContext.getContext().getParameters().get("cd.id") != null) {
// id = 0 usado ao carregar a página.
if (cd.getId() == 0) {
return "ok";
}
if (session.get("carrinhoCds") != null) {
cds = (ArrayList<Cd>) session.get("carrinhoCds");
}
cds.add(new CdDAO().buscaPorId(cd.getId()));
session.put("carrinhoCds", cds);
}
return "ok";
}
public Cd getCd() {
return cd;
}
public void setCd(Cd cd) {
this.cd = cd;
}
public ArrayList<Cd> getCds() {
return cds;
}
public void setCds(ArrayList<Cd> cds) {
this.cds = cds;
}
}[/code]
JavaScript com Ajax:
[code]this.addCarrinho = function(cd){
var url = "addCarrinho?cd.id="+cd.getId();
$.ajax({
url: url,
dataType: 'html',
success: function (html) {
//#carrinho é a div container para mostrar o carrinho
$('#carrinho').html(html);
}
});
};[/code]
JSP do carrinho:
<c:forEach var="cd" items="${carrinhoCds}" varStatus="id">
<div class="itemCarrinho">
<table>
<tr>
<td>
<img align="top" src="${cd.capa}">
</td>
<td>
<b>${cd.titulo}</b>
<br>
${cd.artista}
</td>
</tr>
</table>
</div>
</c:forEach>