Olá pessoal,
Já estou algumas semanas quebrando bastante a cabeça e pesquisando aqui no forum algumas soluções mas até agora não evolui muito. Estou desenvolvendo uma aplicação com PrimeFaces Mobile para que liste os produtos e permita ao usuario selecionar os produtos desejados e em seguida ir para uma outra pagina que contem um datatable com os produtos que ele selecionou, tipo um carrinho de compras.
Estou conseguindo listar os produtos que veem de uma consulta ao Banco de Dados Sql Server pela classe RN(Regra de Negocios) que busca da DAO. Mas quando ele seleciona os produtos jogo para o Bean e na hora de acessar a próxima pagina para listar o que foi selecionado não esta funcionando, pois traz a lista em branco.
Agradeço antecipadamente a quem poder me ajudar com essa solução outro com uma dica de uma outra forma de implementar esta solução.
Segue meu Bean:
[code]
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpSession;
import orcamentomobile.produto.Produto;
import orcamentomobile.produto.ProdutoRN;
import org.primefaces.context.RequestContext;
/**
*
-
@author cleber
*/
@ManagedBean(name=“produtoBean”)
@ViewScoped
public class ProdutoBean implements Serializable{
private List listarProdutos=null;
private String descricaoProduto="";
private Produto[] produtosSelecionados;HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false);
public List getListarProdutos() {
String filialSelecionada = (String) session.getAttribute(“filial”);ProdutoRN rn = new ProdutoRN(); listarProdutos = rn.listarProdutos(descricaoProduto,filialSelecionada ); return listarProdutos;
}
public void setListarProdutos(List listarProdutos) {
this.listarProdutos = listarProdutos;
}public String getDescricaoProduto() {
return descricaoProduto;
}public void setDescricaoProduto(String descricaoProduto) {
this.descricaoProduto = descricaoProduto;
}public Produto[] getProdutosSelecionados() {
return produtosSelecionados;
}public void setProdutosSelecionados(Produto[] produtosSelecionados) {
this.produtosSelecionados = produtosSelecionados;
}public String irMontagemOrcamento(){ //Fazendo redirecionamento pelo Bean é melhor do que direto pela pagina. Pois acessa o .xthml corretamente
return "montagemOrcamento?faces-redirect=true";
}
}[/code]
Segue meu .xhtml que lista os produtos
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:pm="http://primefaces.org/mobile"
contentType="text/html"
renderKitId="PRIMEFACES_MOBILE">
<style type="text/css">
.ui-datatable .ui-datatable-data .even-row td{
background-color:#EEE9E9;
}
.ui-datatable .ui-datatable-data .odd-row td{
background-color:#CDC9C9;
}
</style>
<pm:page title="Components">
<!-- Main View -->
<pm:view id="index">
<pm:header title="PESQUISA DE PRODUTOS" swatch="b">
<f:facet name="left"><p:button value="Back" icon="back" href="montagemOrcamento.jsf"/></f:facet>
</pm:header>
<pm:content>
<h:form id="formFiltros">
<p:outputLabel value="Descrição: " />
<p:inputText id="descprod" value="#{produtoBean.descricaoProduto}" />
<p:commandButton value="Consultar" update=":formListarProdutos" />
</h:form>
<hr />
<h:form id="formListarProdutos" >
<p:commandButton value="OK" action="#{produtoBean.irMontagemOrcamento}" />
<p:dataList>
<p:dataTable id="multiprods" var="produto" value="#{produtoBean.listarProdutos}"
selection="#{produtoBean.produtosSelecionados}"
rowKey="#{produto.codpro}"
emptyMessage="Nenhum registro encontrado."
rowStyleClass="#{empty rowIx or rowIx mod 2 ne 0 ? 'even-row' : 'odd-row'}" rowIndexVar="rowIx">
<p:column headerText="Seleção" width="2%" selectionMode="multiple" />
<p:column headerText="Código" width="10%">
<h2><h:outputText value="#{produto.codpro}" /></h2>
</p:column>
<p:column headerText="Descricao" width="50%">
<h:outputText value="#{produto.descricaoLonga}" />
</p:column>
<p:column headerText="Referencia" width="40">
<h:outputText value="#{produto.codigoInterno}" />
</p:column>
<p:column headerText="Preço" >
<h:outputText value="#{produto.precoVen}"/>
</p:column>
</p:dataTable>
</p:dataList>
</h:form>
</pm:content>
</pm:view>
</pm:page>
</f:view>
E por ultimo a pagina que deve conter os produtos selecionados:
<f:view xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui"
xmlns:pm="http://primefaces.org/mobile"
contentType="text/html"
renderKitId="PRIMEFACES_MOBILE">
<pm:page title="Components">
<!-- Main View -->
<pm:view id="index">
<pm:header title="INCLUSAO DOS PRODUTOS" swatch="b">
<f:facet name="left"><p:button value="Back" icon="back" href="index.jsf"/></f:facet>
</pm:header>
<pm:content>
<p:dataList type="inset">
<f:facet name="header">Filtros</f:facet>
<h:outputText value="NUMERO PEDIDO: #{pedidoBean.numeroPedido} - VENDEDOR: #{pedidoBean.vendedorAtual.nome} - Filial:#{pedidoBean.filial}" />
<h:form>
<p:commandButton value="PESQUISAR" action="#{pedidoBean.irPresquisaProduto}" />
</h:form>
<h:form>
<p:dataTable var="produto" value="#{produtoBean.produtosSelecionados}" emptyMessage="Nenhum registro encontrado.">
<p:column headerText="Codigo" width="50%">
<h:outputText value="#{produto.codpro}" />
</p:column>
<p:column headerText="Descrição" width="50%">
<h:outputText value="#{produto.descricaoLonga}" />
</p:column>
</p:dataTable>
</h:form>
<h:form>
<p:commandButton value="CONFIRMAR" />
<h:outputLink value="../logout"> Sair
</h:outputLink>
</h:form>
</p:dataList>
</pm:content>
</pm:view>
</pm:page>
</f:view>