[RESOLVIDO] Primefaces 2.2.1 não renderiza

7 respostas
M

Boa noite Galera,

Estou iniciando o desenvolvimento do meu TCC e não consigo fazer com que o primefaces renderize corretamente.

Tenho o seguinte código:

package pojo;


public class Produto {
	
	private Long id;
	private String nome;
	private Double preco;
	
	public Produto(){
		
	}
	
	public Long getId() {
		return id;
	}
	public void setId(Long id) {
		this.id = id;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public Double getPreco() {
		return preco;
	}
	public void setPreco(Double preco) {
		this.preco = preco;
	}
}


package pojo;

import java.util.ArrayList;
import java.util.List;

public class Carrinho {

	private List<Produto> produtos;

	public Carrinho(){
		this.produtos = new ArrayList<Produto>();
	}
	
	public List<Produto> getProdutos() {
		return produtos;
	}

	public void setProdutos(List<Produto> produtos) {
		this.produtos = produtos;
	}
	
}

package controller;

import java.util.ArrayList;
import java.util.List;

import pojo.Produto;

public class ProdutoController {

	private List<Produto> produtos = new ArrayList<Produto>();
	private Produto produto;
	
	
	public ProdutoController(){
		produto = new Produto();
		produto.setId(1l);
		produto.setNome("Apontador");
		produto.setPreco(1.0);

		produto = new Produto();
		produto.setId(2l);
		produto.setNome("Lápis");
		produto.setPreco(2.0);
		
		produto = new Produto();
		produto.setId(3l);
		produto.setNome("Caneta");
		produto.setPreco(3.0);
		
		produto = new Produto();
		produto.setId(4l);
		produto.setNome("Caderno");
		produto.setPreco(11.0);

	}
	
	public List<Produto> getProdutos(){
		return produtos;
	}
	
	public void setProdutos(List<Produto> produtos){
		this.produtos = produtos;
	}
}


package controller;

import pojo.Carrinho;
import pojo.Produto;

public class CarrinhoController {

	private Produto produto;
	private Carrinho carrinho;
	
	public CarrinhoController(){
		this.carrinho = new Carrinho();
	}
	
	public void novoProduto(){
		this.produto = new Produto();
	}

	public Produto getProduto() {
		return produto;
	}

	public void setProduto(Produto produto) {
		this.produto = produto;
	}

	public Carrinho getCarrinho() {
		return carrinho;
	}

	public void setCarrinho(Carrinho carrinho) {
		this.carrinho = carrinho;
	}
	
	
}


<!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:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.prime.com.tr/ui"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html">
      
      <h:head>
      	<title>Trabalhando com PRIMEFACES</title>
      	<h:body>
      		<f:view>
      			<h:form>
      				<p:panel header="Produtos Cadastrados">
      					<p:outputPanel id="produtos">
      						<p:dataTable value="#{produtoController.produtos}" var="produto"
      						selectionMode="single" emptyMessage="Não há produtos cadastrados">
      							<p:column>
      								<f:facet name="header">  
      									<h:outputText value="Código"/>
      								</f:facet>
      								<h:outputText value="#{produto.id}" />
      							</p:column>
      							<p:column>
      								<f:facet name="header">  
      									<h:outputText value="Nome"/>
      								</f:facet>
      								<h:outputText value="#{produto.nome}" />
      							</p:column>
      							<p:column>
      								<f:facet name="header">  
      									<h:outputText value="Preço"/>
      								</f:facet>
      								<h:outputText value="#{produto.preco}" />
      							</p:column>
      							<p:column>
      								<f:facet name="header">
      									<h:outputText value="Ação"/>
      								</f:facet>
      								<p:commandLink value="Adicionar ao Carrinho" actionListener="#{carrinhoController.novoProduto}">
      									<p:collector value="#{produto}" addTo="#{carrinhoController.carrinho.produtos}"/>
      								</p:commandLink>
       							</p:column>
      						</p:dataTable>
      					</p:outputPanel>
      				</p:panel>
      				<p:panel>
      					<p:commandButton value="Verificar carrinho de compras" update="carrinho"/>
      				</p:panel>
      				<p:panel header="Carrinho de Compras">
      					<p:outputPanel>
      						<p:dataTable id="carrinho"
      						value="#{carrinhoController.carrinho.produtos}"
      						var="produtoCarrinho"
      						selectionMode="single"
      						emptyMessage="Não há produtos no carrinho">
      							<p:column>
      								<f:facet name="header">
      									<h:outputText value="Código"/>
      								</f:facet>
      								<h:outputText value="#{produtoCarrinho.id}"/>
      							</p:column>
      							<p:column>
      								<f:facet name="header">
      									<h:outputText value="Nome"/>
      								</f:facet>
      								<h:outputText value="#{produtoCarrinho.nome}"/>
      							</p:column>
      							<p:column>
      								<f:facet name="header">
      									<h:outputText value="Preço"/>
      								</f:facet>
      								<h:outputText value="#{produtoCarrinho.preco}"/>
      							</p:column>
      							<p:column>
      								<f:facet name="header">
      									<h:outputText value="Ação"/>
      								</f:facet>
      								<p:commandLink value="Remover do Carrinho">
      									<p:collector value="#{produtoCarrinho}" removeFrom="#{carrinhoController.carrinho.produtos}"/>
      								</p:commandLink>
      							</p:column>
      						</p:dataTable>
      					</p:outputPanel>
      				</p:panel>
      			</h:form>
      		</f:view>
      	</h:body>
      </h:head>
      
      
</html>

7 Respostas

altitdb

O que você quer renderizar exatamente?

E

Olhei rápido o código, mas me parece que faltou o produtos.add(produto); já que você exibe ela na dataTable.

M

Respondendo a sua pergunta altitdb, o que acontece e que não está aparecendo os valores inicializados na classe ProdutoController. Este é apenas um teste que estou realizando para ver se o primefaces está redondo, ou seja, se não falta nenhuma dependência. Acredito que os valores iniciados em ProdutoController, bem como a tag deveriam estar sendo renderizadas e não estão.

edudebom: Onde eu deveria incluir o produtos.add(produto) no código?

Obrigado a todos.

E

Depois de criar o produto.

Pegando um trecho de exemplo:

produto = new Produto(); produto.setId(1l); produto.setNome("Apontador"); produto.setPreco(1.0); produtos.add(produto);

M

edudebom:
Depois de criar o produto.

Pegando um trecho de exemplo:

produto = new Produto(); produto.setId(1l); produto.setNome("Apontador"); produto.setPreco(1.0); produtos.add(produto);

A hora que eu chegar em casa eu faço um teste e posto o resultado.

Obrigado!!!

aix

acredito que ele tenha dito não renderiza seja que não esteja visualizando a tela, ele esta usando JSF2 e não anotou as classes com @ManageBean.

M

Bom dia a todos,

O problema estava onde o edudebom disse. Como esqueci de colocar o produtos.add(produto), a renderização do JSF2/Primefaces se perdeu.

Desde já agradeço a atenção de todos é muito obrigado.

Criado 11 de julho de 2011
Ultima resposta 14 de jul. de 2011
Respostas 7
Participantes 4