Relacionamento Master Detail com JSF 2

13 respostas
J

ola galera, alguem teria algum exemplo de uma pagina master detail com jsf ?

nao sei ao certo com fazer a tela de cadastro com master detail.

eu tenho uma tabela pessoa e outra comissao

as entidades estao assim…

Vendedor.java

package org.smartgestor.cadastro;

import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;




@ManagedBean
@SessionScoped
@Entity
@Table(name="vendedor")
@DiscriminatorValue(value="V")
public class Vendedor extends Pessoa {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Column(name="CPF")
	private String cpf;
	@Column(name="RG")
	private String rg;
	@Column(name="celular")
	private String celular;
	@Column(name="percentualcomissao")
	private double percentualDeComissao;
	@Column(name="descontomax")
	private double descontoMaximo;
	@Column(name="tipocomissao")
	private String tipoComissao;
	@Transient
	private boolean aderirPercentual;
    @OneToMany(mappedBy="ven",targetEntity=Comissao.class,fetch=FetchType.LAZY,cascade=CascadeType.ALL)
	private List<Comissao> comissoes;
	
    
	public Vendedor(double percentualDeComissao, double descontoMaximo,
			String tipoComissao, boolean aderirPercentual) {
		super();
		this.percentualDeComissao = percentualDeComissao;
		this.descontoMaximo = descontoMaximo;
		this.tipoComissao = tipoComissao;
		this.aderirPercentual = aderirPercentual;
	}

	public Vendedor() {
		super();
	}

	public double getPercentualDeComissao() {
		return percentualDeComissao;
	}

	public void setPercentualDeComissao(double percentualDeComissao) {
		this.percentualDeComissao = percentualDeComissao;
	}

	public double getDescontoMaximo() {
		return descontoMaximo;
	}

	public void setDescontoMaximo(double descontoMaximo) {
		this.descontoMaximo = descontoMaximo;
	}

	public String getTipoComissao() {
		return tipoComissao;
	}

	public void setTipoComissao(String tipoComissao) {
		//System.out.println(tipoComissao);
		this.tipoComissao = tipoComissao;
	}


	public boolean isAderirPercentual() {
		return aderirPercentual;
	}

	public void setAderirPercentual(boolean aderirPercentual) {
		this.aderirPercentual = aderirPercentual;
	}

	public void setComissoes(List<Comissao> comissoes) {
		this.comissoes = comissoes;
	}

	public List<Comissao> getComissoes() {
		return comissoes;
	}

	public void setCelular(String celular) {
		this.celular = celular;
	}

	public String getCelular() {
		return celular;
	}

	public void setRg(String rg) {
		this.rg = rg;
	}

	public String getRg() {
		return rg;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getCpf() {
		return cpf;
	}
	
	

}

Comissao.java

package org.smartgestor.cadastro;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@ManagedBean
@SessionScoped
@Entity
@Table(name="comissao")
@DiscriminatorValue(value="CM")
public class Comissao {
	
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int codigo;
	@Column(name="percentualcomissaovista")
	private double percentualComissaoAVista;
	@Column(name="valorvenda")
	private double valorDasVendas;
	@Column(name="percentualcomissaoprazo")
	private double percentualComissaoAPrazo;
	@ManyToOne
	@JoinColumn(name="vendedor_id")
	private Vendedor ven;

	
	public Comissao() {
		// TODO Auto-generated constructor stub
	}


	public double getPercentualComissaoAVista() {
		return percentualComissaoAVista;
	}


	public void setPercentualComissaoAVista(double percentualComissaoAVista) {
		this.percentualComissaoAVista = percentualComissaoAVista;
	}


	public double getValorDasVendas() {
		return valorDasVendas;
	}


	public void setValorDasVendas(double valorDasVendas) {
		this.valorDasVendas = valorDasVendas;
	}


	public double getPercentualComissaoAPrazo() {
		return percentualComissaoAPrazo;
	}


	public void setPercentualComissaoAPrazo(double percentualComissaoAPrazo) {
		this.percentualComissaoAPrazo = percentualComissaoAPrazo;
	}


	public Comissao(double percentualComissaoAVista, double valorDasVendas,
			double percentualComissaoAPrazo) {
		super();
		this.percentualComissaoAVista = percentualComissaoAVista;
		this.valorDasVendas = valorDasVendas;
		this.percentualComissaoAPrazo = percentualComissaoAPrazo;
	}


	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}


	public int getCodigo() {
		return codigo;
	}


	public void setVen(Vendedor ven) {
		this.ven = ven;
	}


	public Vendedor getVen() {
		return ven;
	}


/*	public void setVendedor(Vendedor vendedor) {
		this.vendedor = vendedor;
	}


	public Vendedor getVendedor() {
		return vendedor;
	}*/
	
	
	
}

e na minha pagina de cadastro eu fiz assim:

<?xml version="1.0" encoding="UTF-8" ?>
<!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:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
<ui:composition template="cliente.xhtml">
  <ui:define name="corpo">
    <p:panel header="Cadastrar Vendedor">
    
   		<h:outputText value="Nome Completo"/>
  		<br/>
  		<p:inputText id="CliNomeCompleto" value="#{vendedorDAO.vendedorEdit.nomeCompleto}" size="40"/> 
  		<br/>
  		<h:outputText value="Tipo de endereco"/>
  		<br/>
  		<p:selectOneMenu id="TipoEndereco" value="#{vendedorDAO.vendedorEdit.tipoEndereco}">
		    		<f:selectItem itemLabel="..Selecione.."/>
			        <f:selectItem itemLabel="AEROPORTO" itemValue="AER"/>
			        <f:selectItem itemLabel="ALAMEDA" itemValue="AL"/>
			        <f:selectItem itemLabel="APARTAMENTO" itemValue="AP"/>
			        <f:selectItem itemLabel="AVENIDA" itemValue="AV"/>
			        <f:selectItem itemLabel="BECO" itemValue="BC"/>
			        <f:selectItem itemLabel="BLOCO" itemValue="BL"/>
			        <f:selectItem itemLabel="CAMINHO" itemValue="CAM"/>
			        <f:selectItem itemLabel="ESCADINHA" itemValue="ESCD"/>
			        <f:selectItem itemLabel="ESTAÇÃO" itemValue="EST"/>
			        <f:selectItem itemLabel="ESTRADA" itemValue="ETR"/>
			        <f:selectItem itemLabel="FAZENDA" itemValue="FAZ"/>
			        <f:selectItem itemLabel="FORTALEZA" itemValue="FORT"/>
			        <f:selectItem itemLabel="GALERIA" itemValue="GL"/>
			        <f:selectItem itemLabel="LADEIRA" itemValue="LD"/>
			        <f:selectItem itemLabel="LARGO" itemValue="LGO"/>
			        <f:selectItem itemLabel="PRAÇA" itemValue="PCA"/>
			        <f:selectItem itemLabel="PARQUE" itemValue="PRQ"/>
			        <f:selectItem itemLabel="PRAIA" itemValue="PR"/>
			        <f:selectItem itemLabel="QUADRA" itemValue="QD"/>
			        <f:selectItem itemLabel="QUILÔMETRO" itemValue="KM"/>
			        <f:selectItem itemLabel="QUINTA" itemValue="QTA"/>
			        <f:selectItem itemLabel="RODOVIA" itemValue="ROD"/>
			        <f:selectItem itemLabel="RUA" itemValue="R"/>
			        <f:selectItem itemLabel="SUPER QUADRA" itemValue="SQD"/>
			        <f:selectItem itemLabel="TRAVESSA" itemValue="TRV"/>
			        <f:selectItem itemLabel="VIADUTO" itemValue="VD"/>
			        <f:selectItem itemLabel="VILA" itemValue="VL"/>
		    	</p:selectOneMenu>
		<br/>
  		<h:outputText value="Endereco"/>
  		<br/>
  		<p:inputText id="CliEndereco" value="#{vendedorDAO.vendedorEdit.endereco}" size="60" />    	
		<br/>
  		<h:outputText value="Telefone"/>
  		<br/>
  		<p:inputText id="Clitel" value="#{vendedorDAO.vendedorEdit.fone}"/>  
  		<br/>
  		<h:outputText value="Celular"/>
  		<br/>
  		<p:inputText id="CliCel" value="#{vendedorDAO.vendedorEdit.celular}" size="35"/>
  		<br/>
  		<h:outputText value="Email"/>
  		<br/>
  		<p:inputText  id="CliEmail" value="#{vendedorDAO.vendedorEdit.email}" size="35"/> 
  		<br/>
  		<h:outputText value="CPF"/>
  		<br/>
  		<p:inputText id="CliLimiteCNPJ" value="#{vendedorDAO.vendedorEdit.cpf}"/>
  		<br/>
  		<h:outputText value="RG"/>
  		<br/>
  		<p:inputText id="CliIE" value="#{vendedorDAO.vendedorEdit.rg}" size="35"/>
  		<br/>
  		<p:fieldset legend="Comissoes" id="comissaoForm">
  		<!-- Parte de comissoes -->
  		   <h:outputText value="Tipo Comissao"/>
  		   <br/>
  		   <p:selectOneMenu id="tpComissao" value="#{vendedorDAO.vendedorEdit.tipoComissao}">
  		      <p:ajax update="comissaoForm" event="change"/>
  		      <f:selectItem itemLabel="..Selecione.."/>
  		      <f:selectItem itemLabel="Simples" itemValue="S"/>
  		      <f:selectItem itemLabel="Faixa" itemValue="F"/>
  		   </p:selectOneMenu>
  		
  		<br/>
  		<hr/>
  		<br/>
  		<c:if test="#{vendedorDAO.vendedorEdit.tipoComissao eq 'S'}">
  		  <h:panelGrid columns="2">
  		  	<h:outputText value="% Comissao a Vista"/>
  		  	<h:outputText value="% Comissao a Prazo" />
  		  	<p:inputText value="#{vendedorDAO.vendedorEdit.comissoes.percentualComissaoAVista}" id="cmVista"/>
  		  	<p:inputText value="#{vendedorDAO.vendedorEdit.comissoes.percentualComissaoAPrazo}" id="cmPrazo"/>
  		  </h:panelGrid>
  		</c:if>
  		<c:if test="#{vendedorDAO.vendedorEdit.tipoComissao eq 'F'}">
  		    <c:set var="cms" value="#{vendedorDAO.vendedorEdit.comissoes}"/>
  		    <h:panelGrid columns="3">
  		    <h:outputText value="Valor da Venda"/>
  		    <h:outputText value="% Comissao a Vista"/>
  		    <h:outputText value="% Comissao a Prazo" />
  		  	<p:inputText value="#{vendedorDAO.vendedorEdit.comissoes.valorDasVendas}" id="vlVenda"/>
  		  	<p:inputText value="#{vendedorDAO.vendedorEdit.comissoes.percentualComissaoAVista}" id="cmVista"/>
  		  	<p:inputText value="#{vendedorDAO.vendedorEdit.comissoes.percentualComissaoAPrazo}" id="cmPrazo"/>
  		  </h:panelGrid>
  		  <p:commandButton value="Adicionar" icon="ui-icon-plusthick"/>
  		  <p:dataTable value="#{vendedorDAO.vendedorEdit.comissoes}" var="cm">
  		  	<p:column headerText="Valor Venda">
  		  		<h:outputText value="#{cm.valorDasVendas}"/>
  		  	</p:column>
  		  	<p:column headerText="% a Vista">
  		  	    <h:outputText value="#{cm.percentualComissaoAVista}"/>
  		  	</p:column>
  		  	<p:column headerText="% a Prazo">
  		  	    <h:outputText value="#{cm.percentualComissaoAPrazo}"/>
  		  	</p:column>
  		  </p:dataTable>
  		</c:if>
  		</p:fieldset>
  		<hr/>
  	    <p:commandButton type="submit" value="Novo" actionListener="#{vendedorDAO.salvarVendedor}" update="messages" oncomplete="redireciona('addVendedor.faces')">
            <f:attribute name="tipopessoa" value="J" />
        </p:commandButton>	
  	   <p:commandButton type="submit" value="Salvar" actionListener="#{vendedorDAO.salvarVendedor}" update="messages" oncomplete="redireciona('vendedor.faces')">
            <f:attribute name="tipopessoa" value="J" />
        </p:commandButton>
        <h:outputText value="                              "/>
  		<p:commandButton type="reset" value="Limpar Campos" action="#"/>
  		<h:outputText value="                              "/>
  		<p:commandButton type="button" value="Cancelar" action="#" onclick="redireciona('vendedor.faces')"/>
				  		
    </p:panel>
  </ui:define>
</ui:composition>
</html>

aqui estao VendedorDAO e VendedorFaces

VendedorDAO.java

package org.smartgestor.dao;

import java.util.Date;


import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.swing.JOptionPane;

import org.primefaces.event.SelectEvent;
import org.smartgestor.cadastro.Comissao;
import org.smartgestor.cadastro.Vendedor;
import org.smartgestor.excessao.PessoaException;
import org.smartgestor.faces.VendedorFaces;

public class VendedorDAO {
	

	private Vendedor vendedorEdit;
	
	
	
	public String inicializar (){
		vendedorEdit = new Vendedor();
		return "Cadastrado";
	}
	
	public VendedorDAO(){
		this.vendedorEdit = new Vendedor();
	}
	
	public void salvarVendedor(ActionEvent event) {
		FacesContext context = FacesContext.getCurrentInstance();
		String aux = (String) event.getComponent().getAttributes().get("tipopessoa");
		
		
		
		
		
		Date data = new Date();
		vendedorEdit.setTipopessoa(aux.charAt(0));
		vendedorEdit.setDataCadastro(data);
		try {
			new VendedorFaces().salvar(this.vendedorEdit);
			//grava comissoes
			for(Comissao c : vendedorEdit.getComissoes())
			{
				try {
					new VendedorFaces().gravaComissoes(c);
					
				} catch (Exception e) {
					
				}
			}
			this.vendedorEdit = new Vendedor();
			FacesMessage msg = new FacesMessage("Vendedor Salvo com Sucesso!");
			msg.setSeverity(FacesMessage.SEVERITY_INFO);
			context.addMessage(null, msg);

		} catch (PessoaException e) {
			context.addMessage(
					null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR, e
							.getMessage(), e.getMessage()));
		} catch (Exception e) {
			e.printStackTrace();
			FacesMessage msg = new FacesMessage(
					"Erro inesperado ao salvar o Vendedor!");
			JOptionPane.showMessageDialog(null, msg);
			msg.setSeverity(FacesMessage.SEVERITY_ERROR);
			context.addMessage(null, msg);
		}

	}
	
	public void removerVendedor(ActionEvent event) {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			new VendedorFaces().excluir(this.vendedorEdit);
			this.vendedorEdit = new Vendedor();
			FacesMessage msg = new FacesMessage("Vendedor excluido com Sucesso!");
			msg.setSeverity(FacesMessage.SEVERITY_INFO);
			context.addMessage(null, msg);

		} catch (Exception e) {
			e.printStackTrace();
			FacesMessage msg = new FacesMessage(
					"Erro inesperado ao excluir o Vendedor!");
			JOptionPane.showMessageDialog(null, msg);
			msg.setSeverity(FacesMessage.SEVERITY_ERROR);
			context.addMessage(null, msg);
		}

	}
	
	public void selecionar(SelectEvent event)
	{
		this.vendedorEdit = (Vendedor)event.getObject();
		
	}

	public Vendedor getVendedorEdit() {
		return vendedorEdit;
	}

	public void setVendedorEdit(Vendedor vendedorEdit) {
		this.vendedorEdit = vendedorEdit;
	}
	
	
	
	
}

VendedorFaces.java

package org.smartgestor.faces;

import java.util.List;


import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;
import org.smartgestor.cadastro.Comissao;
import org.smartgestor.cadastro.Vendedor;
import org.smartgestor.excessao.PessoaException;
import org.smartgestor.util.HibernateUtil;

public class VendedorFaces {
	
	private Vendedor vendedorEdicao;
	private int Escolha;
	private List<Vendedor> listaVendedor;
	
	
	public VendedorFaces() {
		ListaDeVendedores();
	}
		
	public void salvar(Vendedor vendedor) throws PessoaException
    {
    	//Pessoa pessoa = new Pessoa();
    	
        if(vendedor.getNomeCompleto().isEmpty() == true){
                throw new PessoaException("N&#65533;o pode grava com Nome em Branco!");
        }
        
        Session session = HibernateUtil.getSession();
        Transaction tx = session.beginTransaction();
        
        try {
        	
        	
        	session.saveOrUpdate(vendedor);
            tx.commit();

		   }
        catch (Exception e)
        {
        	e.printStackTrace();
            tx.rollback();
        }
		finally
		{
			session.close();
		}
     
     
    }
	
	
	public void gravaComissoes(Comissao comissao)
	{
		
		Session session = HibernateUtil.getSession();
        Transaction tx = session.beginTransaction();
        
        try {
        	
        	
        	session.saveOrUpdate(comissao);
            tx.commit();

		   }
        catch (Exception e)
        {
        	e.printStackTrace();
            tx.rollback();
        }
		finally
		{
			session.close();
		}
		
	}
	
	
	 @SuppressWarnings("unchecked")
		public void ListaDeVendedores(){
	        Session session = HibernateUtil.getSession();
	        try{
	            this.listaVendedor = session.createCriteria(Vendedor.class).addOrder(Order.asc("id")).list();
	        }finally{
	            session.close();
	        }
	    }
	    
	    public void excluir(Vendedor vendedor){
	        Session session = HibernateUtil.getSession();
	        Transaction tx = session.beginTransaction();

	        try {
	        	
	        	
	        	session.delete(vendedor);
	            tx.commit();

			   }
	        catch (Exception e)
	        {
	        	e.printStackTrace();
	            tx.rollback();
	        }
			finally
			{
				session.close();
			}
	    }
	
	public Vendedor getVendedorEdicao() {
		return vendedorEdicao;
	}
	public void setVendedorEdicao(Vendedor vendedorEdicao) {
		this.vendedorEdicao = vendedorEdicao;
	}
	public int getEscolha() {
		return Escolha;
	}
	public void setEscolha(int escolha) {
		Escolha = escolha;
	}
	public void setListaVendedor(List<Vendedor> listaVendedor) {
		this.listaVendedor = listaVendedor;
	}
	public List<Vendedor> getListaVendedor() {
		return listaVendedor;
	}
	
	

}

aguardo respostas dos colegas.

Atenciosamente,

13 Respostas

J

alguem sabe ???

me ajudem, preciso muito disso.

:cry:

J

niguem ???
preciso muito disse pessoal… e nao encontrei nada parecido.

P

oi Junior

O que exatamente voce esta precisando? O que nao esta funcionando nesse seu codigo? Alguma exception?

abracos

J

Ola grande paulo silveira, obrigado por responder…
entao… dei uma alterada no codigo e ta meio diferente desse acima, amanha quando chegar no escritorio coloco aqui.

o que esta aconteçendo:

Seguinte, ele passa para meu managed bean do vendedor todos os dados que inserir na pagina, mas os dados do managed bean comissao nao vai por nada. sempre esta nulo.
ai quando eu insiro no banco ele insere somente o vendedor e cria um registro com os campos nulos na tabela comissao.
amanha cedo posto os codigos atuais.
se me ajudasse estaria me fazendo um enorme favor.
Atenciosamente, Jose Aureliano.

J

Segue os codigos atuais:

Comissao.java

package org.smartgestor.cadastro;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@ManagedBean
@RequestScoped
@Entity
@Table(name="comissao")
@DiscriminatorValue(value="CM")
public class Comissao {
	
    @Id
    @GeneratedValue(strategy=GenerationType.AUTO)
    private int codigo;
	@Column(name="percentualcomissaovista")
	private double percentualComissaoAVista;
	@Column(name="valorvenda")
	private double valorDasVendas;
	@Column(name="percentualcomissaoprazo")
	private double percentualComissaoAPrazo;
	@ManyToOne
	@JoinColumn(name="vendedor_id")
	private Vendedor ven;

	
	public Comissao() {
		// TODO Auto-generated constructor stub
	}


	public double getPercentualComissaoAVista() {
		return percentualComissaoAVista;
	}


	public void setPercentualComissaoAVista(double percentualComissaoAVista) {
		this.percentualComissaoAVista = percentualComissaoAVista;
	}


	public double getValorDasVendas() {
		return valorDasVendas;
	}


	public void setValorDasVendas(double valorDasVendas) {
		this.valorDasVendas = valorDasVendas;
	}


	public double getPercentualComissaoAPrazo() {
		return percentualComissaoAPrazo;
	}


	public void setPercentualComissaoAPrazo(double percentualComissaoAPrazo) {
		this.percentualComissaoAPrazo = percentualComissaoAPrazo;
	}


	public Comissao(double percentualComissaoAVista, double valorDasVendas,
			double percentualComissaoAPrazo) {
		super();
		this.percentualComissaoAVista = percentualComissaoAVista;
		this.valorDasVendas = valorDasVendas;
		this.percentualComissaoAPrazo = percentualComissaoAPrazo;
	}


	public void setCodigo(int codigo) {
		this.codigo = codigo;
	}


	public int getCodigo() {
		return codigo;
	}


	public void setVen(Vendedor ven) {
		this.ven = ven;
	}


	public Vendedor getVen() {
		return ven;
	}


/*	public void setVendedor(Vendedor vendedor) {
		this.vendedor = vendedor;
	}


	public Vendedor getVendedor() {
		return vendedor;
	}*/
	
	
	
}

Vendedor.java

package org.smartgestor.cadastro;

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

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;




@ManagedBean
@RequestScoped
@Entity
@Table(name="vendedor")
@DiscriminatorValue(value="V")
public class Vendedor extends Pessoa {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Column(name="CPF")
	private String cpf;
	@Column(name="RG")
	private String rg;
	@Column(name="celular")
	private String celular;
	@Column(name="percentualcomissao")
	private double percentualDeComissao;
	@Column(name="descontomax")
	private double descontoMaximo;
	@Column(name="tipocomissao")
	private String tipoComissao;
	@Transient
	private boolean aderirPercentual;
    @OneToMany(mappedBy="ven",targetEntity=Comissao.class,fetch=FetchType.LAZY,cascade=CascadeType.ALL)
	private List<Comissao> comissoes;
	
    
	public Vendedor(double percentualDeComissao, double descontoMaximo,
			String tipoComissao, boolean aderirPercentual, List<Comissao> comissoes) {
		super();
		this.percentualDeComissao = percentualDeComissao;
		this.descontoMaximo = descontoMaximo;
		this.tipoComissao = tipoComissao;
		this.aderirPercentual = aderirPercentual;
		this.comissoes = comissoes;
	}

	public Vendedor() {
		super();
		this.comissoes = new ArrayList<Comissao>();
	}

	public double getPercentualDeComissao() {
		return percentualDeComissao;
	}

	public void setPercentualDeComissao(double percentualDeComissao) {
		this.percentualDeComissao = percentualDeComissao;
	}

	public double getDescontoMaximo() {
		return descontoMaximo;
	}

	public void setDescontoMaximo(double descontoMaximo) {
		this.descontoMaximo = descontoMaximo;
	}

	public String getTipoComissao() {
		return tipoComissao;
	}

	public void setTipoComissao(String tipoComissao) {
		//System.out.println(tipoComissao);
		this.tipoComissao = tipoComissao;
	}


	public boolean isAderirPercentual() {
		return aderirPercentual;
	}

	public void setAderirPercentual(boolean aderirPercentual) {
		this.aderirPercentual = aderirPercentual;
	}

	public void setComissoes(List<Comissao> comissoes) {
		this.comissoes = comissoes;
	}

	public List<Comissao> getComissoes() {
		return comissoes;
	}

	public void setCelular(String celular) {
		this.celular = celular;
	}

	public String getCelular() {
		return celular;
	}

	public void setRg(String rg) {
		this.rg = rg;
	}

	public String getRg() {
		return rg;
	}

	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	public String getCpf() {
		return cpf;
	}
	
	

}

ComissaoDAO

package org.smartgestor.dao;

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

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;
import javax.swing.JOptionPane;

import org.primefaces.event.SelectEvent;
import org.smartgestor.cadastro.Comissao;
import org.smartgestor.cadastro.Vendedor;
import org.smartgestor.excessao.PessoaException;
import org.smartgestor.faces.VendedorFaces;

public class ComissaoDAO {
	

	private Comissao comissaoEdicao = new Comissao();
	private List<Comissao> comissoes = new ArrayList<Comissao>();
	private Vendedor vendedor = new Vendedor();
	
	
	public String inicializar (){
		///comissaoEdit = new Comissao();
		return "Cadastrado";
	}
	
	public ComissaoDAO(){
		//this.comissaoEdit = new Comissao();
		
	}
	
	
	
	
	public void removerVendedor(ActionEvent event) {
		FacesContext context = FacesContext.getCurrentInstance();
		try {
			

		} catch (Exception e) {
			e.printStackTrace();
			FacesMessage msg = new FacesMessage(
					"Erro inesperado ao excluir o Vendedor!");
			JOptionPane.showMessageDialog(null, msg);
			msg.setSeverity(FacesMessage.SEVERITY_ERROR);
			context.addMessage(null, msg);
		}

	}
	
	public void selecionar(SelectEvent event)
	{
		//this.vendedorEdit = (Vendedor)event.getObject();
		
	}



	

   public void addComissao(ActionEvent event)
   {
	 System.out.println("Executou o metodo");  
	 comissaoEdicao.setVen(this.vendedor);  
	 this.comissoes.add(comissaoEdicao);  
   }

public void setComissoes(List<Comissao> comissoes) {
	this.comissoes = comissoes;
}

public List<Comissao> getComissoes() {
	return comissoes;
}
	
	
///metodo que salva o vendedor e suas comissoes

public void salvarVendedor(ActionEvent event) {
	FacesContext context = FacesContext.getCurrentInstance();
	String aux = (String) event.getComponent().getAttributes().get("tipopessoa");
	
		
	Date data = new Date();
	this.vendedor.setTipopessoa(aux.charAt(0));
	this.vendedor.setDataCadastro(data);
	if(this.vendedor.getTipoComissao().equals("S"))
	{
		//simples
		try {
			new VendedorFaces().salvar(this.vendedor);
			//grava comissoes
			comissaoEdicao.setVen(vendedor);
			new VendedorFaces().gravaComissoes(comissaoEdicao);
			FacesMessage msg = new FacesMessage("Vendedor Salvo com Sucesso!");
			msg.setSeverity(FacesMessage.SEVERITY_INFO);
			context.addMessage(null, msg);

		} catch (PessoaException e) {
			context.addMessage(
					null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR, e
							.getMessage(), e.getMessage()));
		} catch (Exception e) {
			e.printStackTrace();
			FacesMessage msg = new FacesMessage(
					"Erro inesperado ao salvar o Vendedor!");
			JOptionPane.showMessageDialog(null, msg);
			msg.setSeverity(FacesMessage.SEVERITY_ERROR);
			context.addMessage(null, msg);
		}
		
	}else if(this.vendedor.getTipoComissao().equals("F"))
	{
		//faixa
		try {
			new VendedorFaces().salvar(this.vendedor);
			//grava comissoes
			for(Comissao c : this.comissoes)
			{
				try {
					
					new VendedorFaces().gravaComissoes(c);
					
				} catch (Exception e) {
					
				}
			}
			VendedorDAO d = new VendedorDAO();
			d.inicializar();
			FacesMessage msg = new FacesMessage("Vendedor Salvo com Sucesso!");
			msg.setSeverity(FacesMessage.SEVERITY_INFO);
			context.addMessage(null, msg);

		} catch (PessoaException e) {
			context.addMessage(
					null,
					new FacesMessage(FacesMessage.SEVERITY_ERROR, e
							.getMessage(), e.getMessage()));
		} catch (Exception e) {
			e.printStackTrace();
			FacesMessage msg = new FacesMessage(
					"Erro inesperado ao salvar o Vendedor!");
			JOptionPane.showMessageDialog(null, msg);
			msg.setSeverity(FacesMessage.SEVERITY_ERROR);
			context.addMessage(null, msg);
		}
	}
		

}

public void setVendedor(Vendedor vendedor) {
	this.vendedor = vendedor;
}

public Vendedor getVendedor() {
	return vendedor;
}

public void setComissaoEdicao(Comissao comissaoEdicao) {
	this.comissaoEdicao = comissaoEdicao;
	System.out.println("Setou o objeto");
}

public Comissao getComissaoEdicao() {
	return comissaoEdicao;
}


	
}

VendedorFaces.java

package org.smartgestor.faces;

import java.util.List;


import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Order;
import org.smartgestor.cadastro.Comissao;
import org.smartgestor.cadastro.Vendedor;
import org.smartgestor.excessao.PessoaException;
import org.smartgestor.util.HibernateUtil;

public class VendedorFaces {
	
	private Vendedor vendedorEdicao;
	private int Escolha;
	private List<Vendedor> listaVendedor;
	
	
	public VendedorFaces() {
		ListaDeVendedores();
	}
		
	public void salvar(Vendedor vendedor) throws PessoaException
    {
    	//Pessoa pessoa = new Pessoa();
    	
        if(vendedor.getNomeCompleto().isEmpty() == true){
                throw new PessoaException("N&#65533;o pode grava com Nome em Branco!");
        }
        
        Session session = HibernateUtil.getSession();
        Transaction tx = session.beginTransaction();
        
        try {
        	
        	
        	session.saveOrUpdate(vendedor);
            tx.commit();

		   }
        catch (Exception e)
        {
        	e.printStackTrace();
            tx.rollback();
        }
		finally
		{
			session.close();
		}
     
     
    }
	
	
	public void gravaComissoes(Comissao comissao)
	{
		
		Session session = HibernateUtil.getSession();
        Transaction tx = session.beginTransaction();
        
        try {
        	
        	
        	session.saveOrUpdate(comissao);
            tx.commit();

		   }
        catch (Exception e)
        {
        	e.printStackTrace();
            tx.rollback();
        }
		finally
		{
			session.close();
		}
		
	}
	
	
	 @SuppressWarnings("unchecked")
		public void ListaDeVendedores(){
	        Session session = HibernateUtil.getSession();
	        try{
	            this.listaVendedor = session.createCriteria(Vendedor.class).addOrder(Order.asc("id")).list();
	        }finally{
	            session.close();
	        }
	    }
	    
	    public void excluir(Vendedor vendedor){
	        Session session = HibernateUtil.getSession();
	        Transaction tx = session.beginTransaction();

	        try {
	        	
	        	
	        	session.delete(vendedor);
	            tx.commit();

			   }
	        catch (Exception e)
	        {
	        	e.printStackTrace();
	            tx.rollback();
	        }
			finally
			{
				session.close();
			}
	    }
	
	public Vendedor getVendedorEdicao() {
		return vendedorEdicao;
	}
	public void setVendedorEdicao(Vendedor vendedorEdicao) {
		this.vendedorEdicao = vendedorEdicao;
	}
	public int getEscolha() {
		return Escolha;
	}
	public void setEscolha(int escolha) {
		Escolha = escolha;
	}
	public void setListaVendedor(List<Vendedor> listaVendedor) {
		this.listaVendedor = listaVendedor;
	}
	public List<Vendedor> getListaVendedor() {
		return listaVendedor;
	}
	
	

}

e a pagina de cadastro
addVendedor.xhtml

<?xml version="1.0" encoding="UTF-8" ?>
<!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:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
      
      
<ui:composition template="cliente.xhtml">
  <ui:define name="corpo">
    <p:panel header="Cadastrar Vendedor">
    
   		<h:outputText value="Nome Completo"/>
  		<br/>
  		<p:inputText id="CliNomeCompleto" value="#{comissaoDAO.vendedor.nomeCompleto}" size="40"/> 
  		<br/>
  		<h:outputText value="Tipo de endereco"/>
  		<br/>
  		<p:selectOneMenu id="TipoEndereco" value="#{comissaoDAO.vendedor.tipoEndereco}">
		    		<f:selectItem itemLabel="..Selecione.."/>
			        <f:selectItem itemLabel="AEROPORTO" itemValue="AER"/>
			        <f:selectItem itemLabel="ALAMEDA" itemValue="AL"/>
			        <f:selectItem itemLabel="APARTAMENTO" itemValue="AP"/>
			        <f:selectItem itemLabel="AVENIDA" itemValue="AV"/>
			        <f:selectItem itemLabel="BECO" itemValue="BC"/>
			        <f:selectItem itemLabel="BLOCO" itemValue="BL"/>
			        <f:selectItem itemLabel="CAMINHO" itemValue="CAM"/>
			        <f:selectItem itemLabel="ESCADINHA" itemValue="ESCD"/>
			        <f:selectItem itemLabel="ESTAÇÃO" itemValue="EST"/>
			        <f:selectItem itemLabel="ESTRADA" itemValue="ETR"/>
			        <f:selectItem itemLabel="FAZENDA" itemValue="FAZ"/>
			        <f:selectItem itemLabel="FORTALEZA" itemValue="FORT"/>
			        <f:selectItem itemLabel="GALERIA" itemValue="GL"/>
			        <f:selectItem itemLabel="LADEIRA" itemValue="LD"/>
			        <f:selectItem itemLabel="LARGO" itemValue="LGO"/>
			        <f:selectItem itemLabel="PRAÇA" itemValue="PCA"/>
			        <f:selectItem itemLabel="PARQUE" itemValue="PRQ"/>
			        <f:selectItem itemLabel="PRAIA" itemValue="PR"/>
			        <f:selectItem itemLabel="QUADRA" itemValue="QD"/>
			        <f:selectItem itemLabel="QUILÔMETRO" itemValue="KM"/>
			        <f:selectItem itemLabel="QUINTA" itemValue="QTA"/>
			        <f:selectItem itemLabel="RODOVIA" itemValue="ROD"/>
			        <f:selectItem itemLabel="RUA" itemValue="R"/>
			        <f:selectItem itemLabel="SUPER QUADRA" itemValue="SQD"/>
			        <f:selectItem itemLabel="TRAVESSA" itemValue="TRV"/>
			        <f:selectItem itemLabel="VIADUTO" itemValue="VD"/>
			        <f:selectItem itemLabel="VILA" itemValue="VL"/>
		    	</p:selectOneMenu>
		<br/>
  		<h:outputText value="Endereco"/>
  		<br/>
  		<p:inputText id="CliEndereco" value="#{comissaoDAO.vendedor.endereco}" size="60" />    	
		<br/>
  		<h:outputText value="Telefone"/>
  		<br/>
  		<p:inputText id="Clitel" value="#{comissaoDAO.vendedor.fone}"/>  
  		<br/>
  		<h:outputText value="Celular"/>
  		<br/>
  		<p:inputText id="CliCel" value="#{comissaoDAO.vendedor.celular}" size="35"/>
  		<br/>
  		<h:outputText value="Email"/>
  		<br/>
  		<p:inputText  id="CliEmail" value="#{comissaoDAO.vendedor.email}" size="35"/> 
  		<br/>
  		<h:outputText value="CPF"/>
  		<br/>
  		<p:inputText id="CliLimiteCNPJ" value="#{comissaoDAO.vendedor.cpf}"/>
  		<br/>
  		<h:outputText value="RG"/>
  		<br/>
  		<p:inputText id="CliIE" value="#{comissaoDAO.vendedor.rg}" size="35"/>
  		<br/>
  		<p:fieldset legend="Comissoes" id="comissaoForm">
  		<!-- Parte de comissoes -->
  		   <h:outputText value="Tipo Comissao"/>
  		   <br/>
  		   <p:selectOneMenu id="tpComissao" value="#{comissaoDAO.vendedor.tipoComissao}">
  		      <p:ajax update="comissaoForm" event="change"/>
  		      <f:selectItem itemLabel="..Selecione.."/>
  		      <f:selectItem itemLabel="Simples" itemValue="S"/>
  		      <f:selectItem itemLabel="Faixa" itemValue="F"/>
  		   </p:selectOneMenu>
  		
  		<br/>
  		<hr/>
  		<br/>
  		<c:if test="#{comissaoDAO.vendedor.tipoComissao eq 'S'}">
  		  <!-- Comissao Simples -->
  		  
  		  <h:panelGrid columns="2">
  		  	<h:outputText value="% Comissao a Vista"/>
  		  	<h:outputText value="% Comissao a Prazo" />
  		  	<p:inputText value="${comissaoDAO.comissaoEdicao.percentualComissaoAVista}" id="cmSVista"/>
  		  	<p:inputText value="#{comissaoDAO.comissaoEdicao.percentualComissaoAPrazo}" id="cmSPrazo"/> 
  		  </h:panelGrid>
  		 
  		</c:if>
  		<c:if test="#{comissaoDAO.vendedor.tipoComissao eq 'F'}">
  		<!-- Comissao por faixa -->
  		    <h:panelGrid columns="3">
  		    <h:outputText value="Valor da Venda"/>
  		    <h:outputText value="% Comissao a Vista"/>
  		    <h:outputText value="% Comissao a Prazo" />
  		  	<p:inputText value="#{comissaoDAO.comissaoEdicao.valorDasVendas}" id="vlVenda"/>
  		  	<p:inputText value="#{comissaoDAO.comissaoEdicao.percentualComissaoAVista}" id="cmVista"/>
  		  	<p:inputText value="#{comissaoDAO.comissaoEdicao.percentualComissaoAPrazo}" id="cmPrazo"/>
  		  </h:panelGrid>
  		  <p:commandButton value="Adicionar" icon="ui-icon-plusthick" ajax="false">
  		      <p:ajax event="click" listener="#{comissaoDAO.addComissao}" update="grid-comissoes"/>
  		  </p:commandButton>
  		  <p:dataTable value="#{comissaoDAO.comissoes}" var="cm" id="grid-comissoes">
  		  	<p:column headerText="Valor Venda">
  		  		<h:outputText value="#{cm.valorDasVendas}"/>
  		  	</p:column>
  		  	<p:column headerText="% a Vista">
  		  	    <h:outputText value="#{cm.percentualComissaoAVista}"/>
  		  	</p:column>
  		  	<p:column headerText="% a Prazo">
  		  	    <h:outputText value="#{cm.percentualComissaoAPrazo}"/>
  		  	</p:column>
  		  </p:dataTable>
  		</c:if>
  		</p:fieldset>
  		<hr/>
  	    <p:commandButton type="submit" value="Novo" actionListener="#{comissaoDAO.salvarVendedor}" update="messages" oncomplete="redireciona('addVendedor.faces')">
            <f:attribute name="tipopessoa" value="F" />
            <f:setPropertyActionListener target="#{comissaoDAO.comissaoEdicao.percentualComissaoAPrazo}" value="3.0"/>
        </p:commandButton>	
  	   <p:commandButton type="submit" value="Salvar" actionListener="#{comissaoDAO.salvarVendedor}" update="messages" oncomplete="redireciona('vendedor.faces')">
            <f:attribute name="tipopessoa" value="F" />
        </p:commandButton>
        <h:outputText value="                              "/>
  		<p:commandButton type="reset" value="Limpar Campos" action="#"/>
  		<h:outputText value="                              "/>
  		<p:commandButton type="button" value="Cancelar" action="#" onclick="redireciona('vendedor.faces')"/>
				  		
    </p:panel>
  </ui:define>
</ui:composition>
</html>

Preciso muito resolver o mais rapido possivel esse problema.

Grato.

P

oi Junior

Tem muita coisa junta, fica dificil apontar possiveis culpados. Faca o seguinte: remova bastante do codigo, deixando praticamente apenas o formulario do vendedor. Ai utilize o log para imprimir o status dele antes de salvar, e tambem ligue o log do primefaces/richfaces.

Tente tambem colocar um log nos setters do vendedor, pra ver se a populacao do vendedor esta chegando la.

J
ola grande paulo, entao cara ele ta recebendo os dados nos setters do vendedor sim, mas onde passo: (exemplo a comissao simples)
<c:if test="#{comissaoDAO.vendedor.tipoComissao eq 'S'}">
  		  <!-- Comissao Simples -->
  		  
  		  <h:panelGrid columns="2">
  		  	<h:outputText value="% Comissao a Vista"/>
  		  	<h:outputText value="% Comissao a Prazo" />
  		  	<p:inputText value="${comissaoDAO.comissaoEdicao.percentualComissaoAVista}" id="cmSVista"/>
  		  	<p:inputText value="#{comissaoDAO.comissaoEdicao.percentualComissaoAPrazo}" id="cmSPrazo"/> 
  		  </h:panelGrid>
  		 
  		</c:if>

onde passo a comissao.. ele nao entra nos setters e consequentemente deixa o valor em branco ( nulo ).

nao sei o que esta acontecendo.

P

Junir, tende criar um novo formulario, so para editar um objeto do tipo Comissao. Ai faca os logs e veja se o mesmo ocorre num formulario simples.

Ligue os logs em debug do faces que voce usa e poste pra gente

J

funcionou paulo, cara mas agora tem outro probleminha que deve ser bem mais facil de resolver mas nao encontrei muita coisa.
seguinte:

o vendedor pode ter 2 tipos de comissoes

Simples - onde sera somente um objeto comissao para o vendedor

e

Faixa - onde sera uma List para o vendedor

consegui popular os objetos e gravar no banco,
mas o problema surgir quando fui checar os dados…

quando eu faco uma comissao simples ele insere tranquilo
quando faco por faixa ele insere tambem mas tipo ele cria outro regitro vendedor
ficando assim na tabela comissao
±-------±------------------------±------------------------±-----------±------------+
| codigo | percentualcomissaoprazo | percentualcomissaovista | valorvenda | vendedor_id |
±-------±------------------------±------------------------±-----------±------------+
| 11 | 6 | 15 | 900 | 76 |
| 13 | 5 | 10 | 500 | 79 |
| 15 | 5 | 10 | 400 | 80 |
| 16 | 1 | 1 | 123 | 82 |
| 17 | 2 | 3 | 456 | 83 |
±-------±------------------------±------------------------±-----------±------------+
onde esses 2 ultimos registros foram 2 objetos comissao na list do vendedor, veja que ele ta inserindo outro vendedor o 83 era pra ser 82 tambem.

aguardo retorno

P

ou ha um cascade de comissao para vendedor, ou voce esta chamando duas vezes o save para vendedor. engracado que voce esta usando o hibernate direto, que transforma sim a entidade para managed com o update. de qualquer maneira, verifique (o codigo esta muito espalhado para perceber daqui)

De uma olhada aqui:

J

meu Comissao esta com um @ManyToOne(cascade= CascadeType.ALL)

pois estava dando uma exception ele s[o como @ManyToOne

a exception foi a seguinte:

javax.persistence.RollbackException: Error while committing the transaction

so funcionou com o cascade ALL.

campeao se possivel me add no msn: [email removido]

Forte abraco

J

consegui resolver grande paulo, cara eu agora estou com um problema meio sinistro aqui.. nao sei o que pode ser..
seguinte..

fiz uma tela de teste para adicionar a o vendedor e as comissoes e funcionou.
olha o codigo da pagina de teste:

<?xml version="1.0" encoding="UTF-8" ?>
<!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:c="http://java.sun.com/jsp/jstl/core"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      >
<h:head>    
<title>Teste Comissao</title>
</h:head>  
<h:body>
  <f:view>
  	<h:form>
  	<h:outputText value="Nome Completo"/>
  		<br/>
  		<p:inputText id="CliNomeCompleto" value="#{comissaoDAO.vendedor.nomeCompleto}" size="40"/> 
  		<br/>
  		<h:outputText value="Tipo de endereco"/>
  		<br/>
  		<p:selectOneMenu id="TipoEndereco" value="#{comissaoDAO.vendedor.tipoEndereco}">
		    		<f:selectItem itemLabel="..Selecione.."/>
			        <f:selectItem itemLabel="AEROPORTO" itemValue="AER"/>
			        <f:selectItem itemLabel="ALAMEDA" itemValue="AL"/>
			        <f:selectItem itemLabel="APARTAMENTO" itemValue="AP"/>
			        <f:selectItem itemLabel="AVENIDA" itemValue="AV"/>
			        <f:selectItem itemLabel="BECO" itemValue="BC"/>
			        <f:selectItem itemLabel="BLOCO" itemValue="BL"/>
			        <f:selectItem itemLabel="CAMINHO" itemValue="CAM"/>
			        <f:selectItem itemLabel="ESCADINHA" itemValue="ESCD"/>
			        <f:selectItem itemLabel="ESTAÇÃO" itemValue="EST"/>
			        <f:selectItem itemLabel="ESTRADA" itemValue="ETR"/>
			        <f:selectItem itemLabel="FAZENDA" itemValue="FAZ"/>
			        <f:selectItem itemLabel="FORTALEZA" itemValue="FORT"/>
			        <f:selectItem itemLabel="GALERIA" itemValue="GL"/>
			        <f:selectItem itemLabel="LADEIRA" itemValue="LD"/>
			        <f:selectItem itemLabel="LARGO" itemValue="LGO"/>
			        <f:selectItem itemLabel="PRAÇA" itemValue="PCA"/>
			        <f:selectItem itemLabel="PARQUE" itemValue="PRQ"/>
			        <f:selectItem itemLabel="PRAIA" itemValue="PR"/>
			        <f:selectItem itemLabel="QUADRA" itemValue="QD"/>
			        <f:selectItem itemLabel="QUILÔMETRO" itemValue="KM"/>
			        <f:selectItem itemLabel="QUINTA" itemValue="QTA"/>
			        <f:selectItem itemLabel="RODOVIA" itemValue="ROD"/>
			        <f:selectItem itemLabel="RUA" itemValue="R"/>
			        <f:selectItem itemLabel="SUPER QUADRA" itemValue="SQD"/>
			        <f:selectItem itemLabel="TRAVESSA" itemValue="TRV"/>
			        <f:selectItem itemLabel="VIADUTO" itemValue="VD"/>
			        <f:selectItem itemLabel="VILA" itemValue="VL"/>
		    	</p:selectOneMenu>
		<br/>
  		<h:outputText value="Endereco"/>
  		<br/>
  		<p:inputText id="CliEndereco" value="#{comissaoDAO.vendedor.endereco}" size="60" />    	
		<br/>
  		<h:outputText value="Telefone"/>
  		<br/>
  		<p:inputText id="Clitel" value="#{comissaoDAO.vendedor.fone}"/>  
  		<br/>
  		<h:outputText value="Celular"/>
  		<br/>
  		<p:inputText id="CliCel" value="#{comissaoDAO.vendedor.celular}" size="35"/>
  		<br/>
  		<h:outputText value="Email"/>
  		<br/>
  		<p:inputText  id="CliEmail" value="#{comissaoDAO.vendedor.email}" size="35"/> 
  		<br/>
  		<h:outputText value="CPF"/>
  		<br/>
  		<p:inputText id="CliLimiteCNPJ" value="#{comissaoDAO.vendedor.cpf}"/>
  		<br/>
  		<h:outputText value="RG"/>
  		<br/>
  		<p:inputText id="CliIE" value="#{comissaoDAO.vendedor.rg}" size="35"/>
  		<br/>
  		<!-- Comissao por faixa -->
  		    <h:panelGrid columns="3">
  		    <h:outputText value="Valor da Venda"/>
  		    <h:outputText value="% Comissao a Vista"/>
  		    <h:outputText value="% Comissao a Prazo" />
  		  	<p:inputText value="#{comissaoDAO.comissaoEdicao.valorDasVendas}" id="vlVenda"/>
  		  	<p:inputText value="#{comissaoDAO.comissaoEdicao.percentualComissaoAVista}" id="cmVista"/>
  		  	<p:inputText value="#{comissaoDAO.comissaoEdicao.percentualComissaoAPrazo}" id="cmPrazo"/>
  		  </h:panelGrid>
  		  <p:commandButton actionListener="#{comissaoDAO.addComissao}" icon="ui-icon-plusthick" update="grid-comissoes">
  		      
  		  </p:commandButton>
  		  <p:dataTable value="${cmVend}" var="cm" id="grid-comissoes">
  		  	<p:column headerText="Valor Venda">
  		  		<h:outputText value="#{cm.valorDasVendas}"/>
  		  	</p:column>
  		  	<p:column headerText="% a Vista">
  		  	    <h:outputText value="#{cm.percentualComissaoAVista}"/>
  		  	</p:column>
  		  	<p:column headerText="% a Prazo">
  		  	    <h:outputText value="#{cm.percentualComissaoAPrazo}"/>
  		  	</p:column>
  		  </p:dataTable>
  		  <hr/>
  		  <p:commandButton type="submit" actionListener="#{comissaoDAO.salvarVendedor}" value="OK">
  		  	<f:setPropertyActionListener target="#{comissaoDAO.comissoes}" value="#{comissaoDAO.comissoes}"/>
  		  </p:commandButton>
  	</h:form>
  </f:view>
</h:body>
</html>

agora na pagina de producao quando escolho comissao do tipo Faixa eu adiciono as comissoes mas quando eu vou salvar.. esta nulo, tanto na comissao tipo faixa como na simples.
na pagina de testes a faixa e simples funcionam mas na pagina de producao nao.
o objeto fica nulo, nao a muita diferenca no codigo, a unica diferenca para a de teste para a de producao e que a de producao tem um combo on seleciono o tipo de comissao e ai faco uma condicao nos rendered dos form das respectivas formas de comissoes, ja na pagina de teste eu testei primeiro a simples e funcionou, depois testei a de faixa e consegui fazer funcionar, agora quando faco o mesmo procedimento da pagina de producao.... nada acontece, nem o metodo addComissao que adiciona a comissao digitada na List ( isso no caso da comissao faixa ) ele tambem nao chama.
segue o codigo da pagina de producao:

<?xml version="1.0" encoding="UTF-8" ?>
<!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:f="http://java.sun.com/jsf/core"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:c="http://java.sun.com/jsp/jstl/core">
<h:head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>SmartGestor</title>
<link rel="Stylesheet" type="text/css" href="style.css"/>
<script type="text/javascript" language="javascript" src="../js/funcoes.js"/>
<style type="text/css">
	.ui-widget,  
    .ui-widget .ui-widget {  
    font-size: 12px !important;  
	} 
</style>
</h:head>
<h:body>
<f:view>
  	<h:form>
  
 
  <!-- Menu do sistema -->
  <p:menubar>
   			<p:submenu label="Cadastro" icon="ui-icon-note">  
              <p:menuitem value="Clientes" url="cliente.faces" />
              <p:menuitem value="Empresas" url="empresa.faces"/>
              <p:menuitem value="Fornecedores" url="fornecedor.faces" />
              <p:menuitem value="Tecnicos" url="tecnico.faces" />
              <p:menuitem value="Vendedores" url="vendedor.faces" />  
            </p:submenu> 
   		</p:menubar>
   	<!-- Final do Menu -->
  
        
   <p:panel header="Cadastrar Vendedor">
    
   		<h:outputText value="Nome Completo"/>
  		<br/>
  		<p:inputText id="CliNomeCompleto" value="#{comissaoDAO.vendedor.nomeCompleto}" size="40"/> 
  		<br/>
  		<h:outputText value="Tipo de endereco"/>
  		<br/>
  		<p:selectOneMenu id="TipoEndereco" value="#{comissaoDAO.vendedor.tipoEndereco}">
		    		<f:selectItem itemLabel="..Selecione.."/>
			        <f:selectItem itemLabel="AEROPORTO" itemValue="AER"/>
			        <f:selectItem itemLabel="ALAMEDA" itemValue="AL"/>
			        <f:selectItem itemLabel="APARTAMENTO" itemValue="AP"/>
			        <f:selectItem itemLabel="AVENIDA" itemValue="AV"/>
			        <f:selectItem itemLabel="BECO" itemValue="BC"/>
			        <f:selectItem itemLabel="BLOCO" itemValue="BL"/>
			        <f:selectItem itemLabel="CAMINHO" itemValue="CAM"/>
			        <f:selectItem itemLabel="ESCADINHA" itemValue="ESCD"/>
			        <f:selectItem itemLabel="ESTAÇÃO" itemValue="EST"/>
			        <f:selectItem itemLabel="ESTRADA" itemValue="ETR"/>
			        <f:selectItem itemLabel="FAZENDA" itemValue="FAZ"/>
			        <f:selectItem itemLabel="FORTALEZA" itemValue="FORT"/>
			        <f:selectItem itemLabel="GALERIA" itemValue="GL"/>
			        <f:selectItem itemLabel="LADEIRA" itemValue="LD"/>
			        <f:selectItem itemLabel="LARGO" itemValue="LGO"/>
			        <f:selectItem itemLabel="PRAÇA" itemValue="PCA"/>
			        <f:selectItem itemLabel="PARQUE" itemValue="PRQ"/>
			        <f:selectItem itemLabel="PRAIA" itemValue="PR"/>
			        <f:selectItem itemLabel="QUADRA" itemValue="QD"/>
			        <f:selectItem itemLabel="QUILÔMETRO" itemValue="KM"/>
			        <f:selectItem itemLabel="QUINTA" itemValue="QTA"/>
			        <f:selectItem itemLabel="RODOVIA" itemValue="ROD"/>
			        <f:selectItem itemLabel="RUA" itemValue="R"/>
			        <f:selectItem itemLabel="SUPER QUADRA" itemValue="SQD"/>
			        <f:selectItem itemLabel="TRAVESSA" itemValue="TRV"/>
			        <f:selectItem itemLabel="VIADUTO" itemValue="VD"/>
			        <f:selectItem itemLabel="VILA" itemValue="VL"/>
		    	</p:selectOneMenu>
		<br/>
  		<h:outputText value="Endereco"/>
  		<br/>
  		<p:inputText id="CliEndereco" value="#{comissaoDAO.vendedor.endereco}" size="60" />    	
		<br/>
  		<h:outputText value="Telefone"/>
  		<br/>
  		<p:inputText id="Clitel" value="#{comissaoDAO.vendedor.fone}"/>  
  		<br/>
  		<h:outputText value="Celular"/>
  		<br/>
  		<p:inputText id="CliCel" value="#{comissaoDAO.vendedor.celular}" size="35"/>
  		<br/>
  		<h:outputText value="Email"/>
  		<br/>
  		<p:inputText  id="CliEmail" value="#{comissaoDAO.vendedor.email}" size="35"/> 
  		<br/>
  		<h:outputText value="CPF"/>
  		<br/>
  		<p:inputText id="CliLimiteCNPJ" value="#{comissaoDAO.vendedor.cpf}"/>
  		<br/>
  		<h:outputText value="RG"/>
  		<br/>
  		<p:inputText id="CliIE" value="#{comissaoDAO.vendedor.rg}" size="35"/>
  		<br/>
  		<p:fieldset legend="Comissoes" id="comissaotela">
  		<!-- Parte de comissoes -->
  		   <h:outputText value="Tipo Comissao"/>
  		   <br/>
  		   <p:selectOneMenu id="tpComissao" value="#{comissaoDAO.vendedor.tipoComissao}">
  		      <p:ajax update="comissaotela" event="change"/>
  		      <f:selectItem itemLabel="..Selecione.."/>
  		      <f:selectItem itemLabel="Simples" itemValue="S"/>
  		      <f:selectItem itemLabel="Faixa" itemValue="F"/>
  		   </p:selectOneMenu>
  		
  		<br/>
  		<hr/>
  		<br/>
  		
  		  <!-- Comissao Simples -->
  		  
  		  <h:panelGrid columns="2" rendered="#{comissaoDAO.vendedor.tipoComissao eq 'S'}">
  		  	<h:outputText value="% Comissao a Vista"/>
  		  	<h:outputText value="% Comissao a Prazo" />
  		  	<p:inputText value="${comissaoDAO.comissaoEdicao.percentualComissaoAVista}" id="cmSVista"/>
  		  	<p:inputText value="#{comissaoDAO.comissaoEdicao.percentualComissaoAPrazo}" id="cmSPrazo"/> 
  		  </h:panelGrid>
  		 
  		
  		
  		<!-- Comissao por faixa -->
  		    <h:panelGrid columns="3" rendered="#{comissaoDAO.vendedor.tipoComissao eq 'F'}">
  		    <h:outputText value="Valor da Venda"/>
  		    <h:outputText value="% Comissao a Vista"/>
  		    <h:outputText value="% Comissao a Prazo" />
  		  	<p:inputText value="#{comissaoDAO.comissaoEdicao.valorDasVendas}" id="vlVenda"/>
  		  	<p:inputText value="#{comissaoDAO.comissaoEdicao.percentualComissaoAVista}" id="cmVista"/>
  		  	<p:inputText value="#{comissaoDAO.comissaoEdicao.percentualComissaoAPrazo}" id="cmPrazo"/>
  		  </h:panelGrid>
  		  <p:commandButton actionListener="#{comissaoDAO.addComissao}" icon="ui-icon-plusthick" update="grid-comissoes">
  		      
  		  </p:commandButton>
  		  <p:dataTable value="${cmVend}" var="cm" id="grid-comissoes" rendered="#{comissaoDAO.vendedor.tipoComissao eq 'F'}">
  		  	<p:column headerText="Valor Venda">
  		  		<h:outputText value="#{cm.valorDasVendas}"/>
  		  	</p:column>
  		  	<p:column headerText="% a Vista">
  		  	    <h:outputText value="#{cm.percentualComissaoAVista}"/>
  		  	</p:column>
  		  	<p:column headerText="% a Prazo">
  		  	    <h:outputText value="#{cm.percentualComissaoAPrazo}"/>
  		  	</p:column>
  		  </p:dataTable>
  		
  		</p:fieldset>
  		<hr/>
  	    <p:commandButton type="submit" value="Novo" actionListener="#{comissaoDAO.salvarVendedor}" update="messages" oncomplete="redireciona('addVendedor.faces')">
            <f:setPropertyActionListener target="#{comissaoDAO.comissoes}" value="#{comissaoDAO.comissoes}"/>
        </p:commandButton>	
  	   <p:commandButton type="submit" value="Salvar" actionListener="#{comissaoDAO.salvarVendedor}" update="messages" oncomplete="redireciona('vendedor.faces')">
            <f:setPropertyActionListener target="#{comissaoDAO.comissoes}" value="#{comissaoDAO.comissoes}"/>
        </p:commandButton>
        <h:outputText value="                              "/>
  		<p:commandButton type="reset" value="Limpar Campos" action="#"/>
  		<h:outputText value="                              "/>
  		<p:commandButton type="button" value="Cancelar" action="#" onclick="redireciona('vendedor.faces')"/>
				  		
    </p:panel>
				  		
  	</h:form>
</f:view> 
  
</h:body>
</html>

Ideias ?

grato.

P

junior, como é uma pergunta nova, abra num novo topico, assim outras pessoas podem ajudar. aqui ja ha muita coisa e esta complicado de acompanhar.

pra ajudar nesse erro, voce precisa ser mais sucinto com o codigo do xhtml. coloque so as partes principais. tambem coloque os metodos dos managed beans que estao sendo acessados, escreva alguns logs/system.out.printlns e poste pra gente essa saida tambem. sem isso fica dificil de tentar descobrir.

Criado 18 de abril de 2012
Ultima resposta 30 de abr. de 2012
Respostas 13
Participantes 2