Boa noite to ralando e nada… até essa hora 23:14
Seguinte fiz uma lista(categorias) que quando clica nela seleciona os produtos de uma tabela (rich:datatable) referente aquela categoria. Ok isso funciona.
Mas quando clica em um link da tabela, esse link não funciona.
Coloquei na control um valor fixo para as categoria(ou seja a tabela fica fixa, não muda conforme a categoria) desta forma os links funcionam.
Cheguei a conclusão que quando clico no link de categorias para filtrar a tabela conforme a categoria, que os links não funionam.
Alguém pode me ajudar ?
Atensioamente. Flávio.
<?xml version=“1.0” encoding=“ISO-8859-1”?>
<!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=“http://www.w3.org/1999/xhtml”
xmlns:h=“http://java.sun.com/jsf/html”
xmlns:a4j=“http://richfaces.org/a4j”
xmlns:rich=“http://richfaces.org/rich”
xmlns:c=“http://java.sun.com/jstl/core”
xmlns:f=“http://java.sun.com/jsf/core”
xmlns:ui=“http://java.sun.com/jsf/facelets”>
<head>
<link rel=“stylesheet” href=“css/style.css” type=“text/css” />
</head>
<body>
<h:form>
<div id=“fazpedido” >
<div id=“menupedido”>
<rich:panel>
<f:facet name=“header”>Categorias</f:facet>
<ui:repeat value="#{controlerPedido.todasCat}" var=“item” > ********* aqui eu listo as categorias **********
<div id=“tabelapedido”> ******* essa é a tabela que é filtrada conforme as categorias ************
<rich:dataTable value="#{controlerPedido.produtosCategoria}" width=“550px;” var=“item” id=“table” >
<f:facet name=“header”>Produtos</f:facet>
<rich:column width=“390px” >
<f:facet name=“header”>Produto</f:facet>
<h:outputText value="#{item.nome}" />
<h:outputText value="#{item.descricao}" />
</rich:column>
<rich:column width=“50px” >
<f:facet name=“header”>Quantidade</f:facet>
<h:inputText style=“width:30px” value="#{controlerPedido.quantidade}" />
</rich:column>
<rich:column width=“50px” >
<f:facet name=“header”>Preço</f:facet>
<h:outputText value="#{item.preco}" />
</rich:column>
<rich:column width=“60px” >
<h:commandLink action="#{controlerPedido.adicionarProdutoAoPedido}" value=“Inserir” /> ********* Link que nao funciona quando a tabela é filtrada **********
</rich:column>
</rich:dataTable>
</div>
<div id=“pedido”>
<rich:dataTable width=“550px;” value="#{controlerPedido.pedido}" id=“tabpedido” var=“item” >
<f:facet name=“header”>Pedido</f:facet>
<rich:column width=“350px;” >
<f:facet name=“header”>Produto</f:facet>
</rich:column>
<rich:column width=“50px” >
<f:facet name=“header”>Quantidade</f:facet>
</rich:column>
<rich:column width=“50px” >
<f:facet name=“header”>Preço</f:facet>
</rich:column>
<rich:column width=“50px” >
<f:facet name=“header”>SubTotal</f:facet>
</rich:column>
<rich:column width=“50px” >
<f:facet name=“header”>Excluir</f:facet>
</rich:column>
</rich:dataTable>
</div>
</div>
</h:form>
</body>
</html>
/**
*
*/
package controler;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import javax.faces.context.FacesContext;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;
import pedido.Pedido;
import dao.CategoriaDAO;
import dao.DAOException;
import dao.ProdutoDAO;
import entities.Categoria;
import entities.Produto;
/**
- @author Flavio
*/
public class ControlerPedido {
private CategoriaDAO categoriaDAO;
private ProdutoDAO produtoDAO;
private DataModel dataModel;
private Pedido pedido;
private String quantidade;
public ControlerPedido() {
categoriaDAO = new CategoriaDAO();
produtoDAO = new ProdutoDAO();
pedido = new Pedido();
}
public void adicionarProdutoAoPedido() { ******** metodo que quero chamar da tabela ****************
String id = (String) FacesContext.getCurrentInstance()
.getExternalContext().getRequestParameterMap().get("idproduto");
Produto produto = null;
try {
produto = produtoDAO.findByPK(Integer.parseInt(id));
} catch (NumberFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (DAOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println(produto.getNome());
pedido.adicionarAoPedido(produto, Integer.parseInt(quantidade));
}
public void imprime() {
System.out.println("casilda");
}
public DataModel getPedido() {
return pedido.listarPedidos();
}
public DataModel getProdutosCategoria() {
String id = (String) FacesContext.getCurrentInstance()
.getExternalContext().getRequestParameterMap().get("id");
if (id == null) {
id = "0";
}
Map<String, Object> map = new HashMap<String, Object>();
map.put("idcategoria", 34 ); ******** aqui fixei a categoria ai funciona mas quando fica dinamica nao funciona *****
String query = "SELECT p FROM Produto p WHERE p.categoria.id=:idcategoria";
dataModel = new ListDataModel(produtoDAO.listPesqParam(query, map));
return dataModel;
}
public List<Categoria> getTodasCat() {
List<Categoria> list = null;
try {
list = categoriaDAO.findAll();
} catch (DAOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
public String getQuantidade() {
return quantidade;
}
public void setQuantidade(String quantidade) {
this.quantidade = quantidade;
}
}