Select One Menu em Cascata JSF e Primefaces

0 respostas
jpajsfcdiprimefacesjava
F

Saudações pessoal

Estou a desenvolver um projecto e preciso fazer select one menus em cascata, ao escolher a marca do produto, ele deve preencher os modelos dessa marca, mas quando escolho a marca é lançada a seguinte excepção:

Hibernate:

select

marca0_.id as id1_3_,

marca0_.nome as nome2_3_

from

marca marca0_

Hibernate:

select

marca0_.id as id1_3_0_,

marca0_.nome as nome2_3_0_

from

marca marca0_

where

marca0_.id=?

Hibernate:

select

marca0_.id as id1_3_,

marca0_.nome as nome2_3_

from

marca marca0_

Hibernate:

select

marca0_.id as id1_3_,

marca0_.nome as nome2_3_

from

marca marca0_

Hibernate:

select

modelo0_.id as id1_4_,

modelo0_.marca_id as marca_id3_4_,

modelo0_.nome as nome2_4_

from

modelo modelo0_

where

modelo0_.marca_id=?

Aug 18, 2017 3:10:26 PM com.sun.faces.lifecycle.InvokeApplicationPhase execute

WARNING: /CadastraProduto.xhtml @31,101 listener="#{cadastraProdutoBean.carregarModelos()}": java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance beforeQuery flushing: mz.co.mozpricerunner.model.Marca

javax.el.ELException: /CadastraProduto.xhtml @31,101 listener="#{cadastraProdutoBean.carregarModelos()}": java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance beforeQuery flushing: mz.co.mozpricerunner.model.Marca

at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:111)

at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:60)

at javax.faces.event.AjaxBehaviorEvent.processListener(AjaxBehaviorEvent.java:113)

at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:106)

at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:805)

at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:745)

Caused by: java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance beforeQuery flushing: mz.co.mozpricerunner.model.Marca

at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:144)

at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:155)

at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1419)

at org.hibernate.query.Query.getResultList(Query.java:146)

at mz.co.mozpricerunner.repository.ModeloRepository.findByMarca(ModeloRepository.java:45)

at mz.co.mozpricerunner.controller.CadastraProdutoBean.carregarModelos(CadastraProdutoBean.java:50)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.apache.el.parser.AstValue.invoke(AstValue.java:247)

at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)

at org.jboss.weld.module.web.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)

at org.jboss.weld.module.web.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)

at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)

 31 more

Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance beforeQuery flushing: mz.co.mozpricerunner.model.Marca

at org.hibernate.engine.internal.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:279)

at org.hibernate.type.EntityType.getIdentifier(EntityType.java:462)

at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:161)

at org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:53)

at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:628)

at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1956)

at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1909)

at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1887)

at org.hibernate.loader.Loader.doQuery(Loader.java:932)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:349)

at org.hibernate.loader.Loader.doList(Loader.java:2615)

at org.hibernate.loader.Loader.doList(Loader.java:2598)

at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2430)

at org.hibernate.loader.Loader.list(Loader.java:2425)

at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:502)

at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:375)

at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216)

at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1481)

at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1441)

at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1410)

 43 more
Aug 18, 2017 3:10:26 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError

SEVERE: java.lang.IllegalStateException: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance beforeQuery flushing: mz.co.mozpricerunner.model.Marca

at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:144)

at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:155)

at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1419)

at org.hibernate.query.Query.getResultList(Query.java:146)

at mz.co.mozpricerunner.repository.ModeloRepository.findByMarca(ModeloRepository.java:45)

at mz.co.mozpricerunner.controller.CadastraProdutoBean.carregarModelos(CadastraProdutoBean.java:50)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:498)

at org.apache.el.parser.AstValue.invoke(AstValue.java:247)

at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:267)

at org.jboss.weld.module.web.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:40)

at org.jboss.weld.module.web.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)

at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105)

at org.primefaces.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:60)

at javax.faces.event.AjaxBehaviorEvent.processListener(AjaxBehaviorEvent.java:113)

at javax.faces.component.behavior.BehaviorBase.broadcast(BehaviorBase.java:106)

at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:805)

at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790)

at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282)

at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81)

at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)

at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)

at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:291)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:239)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:217)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)

at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:518)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1091)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:673)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)

at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:745)

Caused by: org.hibernate.TransientObjectException: object references an unsaved transient instance - save the transient instance beforeQuery flushing: mz.co.mozpricerunner.model.Marca

at org.hibernate.engine.internal.ForeignKeys.getEntityIdentifierIfNotUnsaved(ForeignKeys.java:279)

at org.hibernate.type.EntityType.getIdentifier(EntityType.java:462)

at org.hibernate.type.ManyToOneType.nullSafeSet(ManyToOneType.java:161)

at org.hibernate.param.NamedParameterSpecification.bind(NamedParameterSpecification.java:53)

at org.hibernate.loader.hql.QueryLoader.bindParameterValues(QueryLoader.java:628)

at org.hibernate.loader.Loader.prepareQueryStatement(Loader.java:1956)

at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1909)

at org.hibernate.loader.Loader.executeQueryStatement(Loader.java:1887)

at org.hibernate.loader.Loader.doQuery(Loader.java:932)

at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:349)

at org.hibernate.loader.Loader.doList(Loader.java:2615)

at org.hibernate.loader.Loader.doList(Loader.java:2598)

at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2430)

at org.hibernate.loader.Loader.list(Loader.java:2425)

at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:502)

at org.hibernate.hql.internal.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:375)

at org.hibernate.engine.query.spi.HQLQueryPlan.performList(HQLQueryPlan.java:216)

at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1481)

at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1441)

at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1410)

 43 more

A minha entidade produto

package mz.co.mozpricerunner.model;

import java.io.Serializable;
import java.math.BigDecimal;

import javax.persistence.CascadeType;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

import javax.persistence.Table;

import javax.validation.constraints.NotNull;
@Entity

@Table(name = produto)

public class Produto implements Serializable {
private static final long serialVersionUID = 1L;

private Integer id;
private String nome;
private BigDecimal preco;
private ProdutoCategoria produtoCategoria;
private String descricao;
private String cor;
private Modelo modelo = new Modelo();

public Produto() {
}

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Integer getId() {
	return id;
}

public void setId(Integer id) {
	this.id = id;
}

@NotNull
@Column(name = "produto_categoria", nullable = false)
public ProdutoCategoria getProdutoCategoria() {
	return produtoCategoria;
}

public void setProdutoCategoria(ProdutoCategoria produtoCategoria) {
	this.produtoCategoria = produtoCategoria;
}

//@NotNull
@ManyToOne (cascade = CascadeType.ALL)
@JoinColumn(name = "modelo_id")
public Modelo getModelo() {
	return modelo;
}

public void setModelo(Modelo modelo) {
	this.modelo = modelo;
}

public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

@Column(precision = 2, nullable = false)
public BigDecimal getPreco() {
	return preco;
}

public void setPreco(BigDecimal preco) {
	this.preco = preco;
}

public String getDescricao() {
	return descricao;
}

public void setDescricao(String descricao) {
	this.descricao = descricao;
}

public String getCor() {
	return cor;
}

public void setCor(String cor) {
	this.cor = cor;
}

@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((id == null) ? 0 : id.hashCode());
	return result;
}

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	Produto other = (Produto) obj;
	if (id == null) {
		if (other.id != null)
			return false;
	} else if (!id.equals(other.id))
		return false;
	return true;
}

}

A minha entidade Modelo

import java.io.Serializable;

import javax.persistence.CascadeType;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

import javax.persistence.JoinColumn;

import javax.persistence.ManyToOne;

import javax.persistence.Table;

import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.NotEmpty;

@Entity

@Table (name = modelo)

public class Modelo implements Serializable {
private static final long serialVersionUID = 1L;

private Integer id;
private String nome;
private Marca marca = new Marca();

public Modelo() {}

@Id
@GeneratedValue (strategy = GenerationType.AUTO)
public Integer getId() {
	return id;
}

public void setId(Integer id) {
	this.id = id;
}

@NotEmpty
@Column (nullable = false, unique = true)
public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}

@NotNull
@ManyToOne (cascade = CascadeType.ALL)
@JoinColumn (name = "marca_id")
public Marca getMarca() {
	return marca;
}

public void setMarca(Marca marca) {
	this.marca = marca;
}

@Override
public int hashCode() {
	final int prime = 31;
	int result = 1;
	result = prime * result + ((id == null) ? 0 : id.hashCode());
	return result;
}

@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	Modelo other = (Modelo) obj;
	if (id == null) {
		if (other.id != null)
			return false;
	} else if (!id.equals(other.id))
		return false;
	return true;
}

}

A minha Entidade Marca

import java.io.Serializable;

import javax.persistence.Column;

import javax.persistence.Entity;

import javax.persistence.GeneratedValue;

import javax.persistence.GenerationType;

import <a href="http://javax.persistence.Id">javax.persistence.Id</a>;

import javax.persistence.Table;

import org.hibernate.validator.constraints.NotEmpty;

@Entity

@Table (name = marca)

public class Marca implements Serializable {
private static final long serialVersionUID = 1L;

private Integer id;
private String nome;

public Marca(){}

@Id
@GeneratedValue (strategy = GenerationType.AUTO)
public Integer getId() {
	return id;
}

public void setId(Integer id) {
	this.id = id;
}

@NotEmpty
@Column (nullable = false, length = 30, unique = true)
public String getNome() {
	return nome;
}

public void setNome(String nome) {
	this.nome = nome;
}
<a class="mention" href="/u/override">@Override</a>

public int hashCode() {

final int prime = 31;

int result = 1;

result = prime * result + ((id == null) ? 0 : id.hashCode());

return result;

}
@Override
public boolean equals(Object obj) {
	if (this == obj)
		return true;
	if (obj == null)
		return false;
	if (getClass() != obj.getClass())
		return false;
	Marca other = (Marca) obj;
	if (id == null) {
		if (other.id != null)
			return false;
	} else if (!id.equals(other.id))
		return false;
	return true;
}

}

O método que busca modelos em função de uma marca, que está no repositório de Modelos

public List findByMarca(Marca marca) {

String jpql = "select m from Modelo m where m.marca = :marca";

	TypedQuery<Modelo> query = manager.createQuery(jpql, Modelo.class);
	query.setParameter("marca", marca);
	
	List<Modelo> modelos = query.getResultList();
	
	return modelos;
}
O converter do Modelo

@FacesConverter(forClass = Modelo.class)

public class ModeloConverter implements Converter {
@Inject
private ModeloRepository modeloRepository;

@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String value) {
	Modelo modelo = null;
	
	if (value != null && !"".equals(value)) {
		modelo = this.modeloRepository.findById(new Integer(value));
	}
	
	return modelo;
}

@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object value) {
	if (value != null) {
		Modelo modelo = ((Modelo) value);
		
		return modelo.getId() == null ? null : modelo.getId().toString();
	}
	return null;
}

}

O converter da Marca

@FacesConverter(forClass = Marca.class)

public class MarcaConverter implements Converter {
@Inject
private MarcaRepository marcaRepository;

@Override
public Object getAsObject(FacesContext arg0, UIComponent arg1, String value) {
	Marca marca = null;
	
	if (value != null && !"".equals(value)) {
		marca = this.marcaRepository.findById(new Integer(value));
	}
	
	return marca;
}

@Override
public String getAsString(FacesContext arg0, UIComponent arg1, Object value) {
	if (value != null) {
		Marca marca = ((Marca) value);
		
		return marca.getId() == null ? null : marca.getId().toString();
	}
	return null;
}

}

O Managed Bean de cadastro de produto
package mz.co.mozpricerunner.controller;

import java.io.Serializable;

import java.util.ArrayList;

import java.util.List;
import javax.faces.bean.ViewScoped;

import javax.inject.Inject;

import javax.inject.Named;
import mz.co.mozpricerunner.model.Marca;

import mz.co.mozpricerunner.model.Modelo;

import mz.co.mozpricerunner.model.Produto;

import mz.co.mozpricerunner.model.ProdutoCategoria;

import mz.co.mozpricerunner.repository.MarcaRepository;

import mz.co.mozpricerunner.repository.ModeloRepository;

@Named
@ViewScoped
public class CadastraProdutoBean implements Serializable {

private static final long serialVersionUID = 1L;

@Inject
private MarcaRepository marcaRepository;

@Inject
private ModeloRepository modeloRepository;

private Produto produto = new Produto();

private List<Marca> marcas = new ArrayList<>();

private List<Modelo> modelos = new ArrayList<>();

public Produto getProduto() {
	return produto;
}

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

public void carregarModelos() {

	if (produto != null) {
		if (produto.getModelo() != null) {
			if (produto.getModelo().getMarca() != null) {
				
				modeloRepository.findByMarca(produto.getModelo().getMarca());
			}
		}
	}
}

public List<Marca> getMarcas() {
	if (this.marcas.isEmpty())
		marcas = marcaRepository.findAll();
	return marcas;
}

public List<Modelo> getModelos() {
	return modelos;
}

public ProdutoCategoria[] getCategorias() {
	return ProdutoCategoria.values();
}

}

O código da página xhtml
<h:form>

<div class="ui-fluid">

			<p:panelGrid columns="4" layout="grid"
				columnClasses="ui-grid-col-2, ui-grid-col-4, ui-grid-col-2, ui-grid-col-4"
				styleClass="ui-noborder">

				<p:outputLabel for="nome" value="Nome" />
				<p:inputText id="nome" value="#{cadastraProdutoBean.produto.nome}" />

				<p:outputLabel for="preco" value="Preço" />
				<p:inputText id="preco" value="#{cadastraProdutoBean.produto.preco}" />

				<p:outputLabel for="marca" value="Marca" />
				<p:selectOneMenu id="marca" value="#{cadastraProdutoBean.produto.modelo.marca}">
					<f:selectItem itemLabel="Escolha a Marca" noSelectionOption="true" />
					<f:selectItems value="#{cadastraProdutoBean.marcas}" var="marca"
						itemValue="#{marca}" itemLabel="#{marca.nome}"/>
					<p:ajax update="modelo" listener="#{cadastraProdutoBean.carregarModelos()}" process="@this" />
				</p:selectOneMenu>

				<p:outputLabel for="modelo" value="Modelo" />
				<p:selectOneMenu id="modelo" value="#{cadastraProdutoBean.produto.modelo}">
					<f:selectItem itemLabel="Escolha o Modelo"
						noSelectionOption="true" />
				</p:selectOneMenu>

				<p:outputLabel for="categoria" value="Categoria" />
				<p:selectOneMenu id="categoria" value="#{cadastraProdutoBean.produto.produtoCategoria}">
					<f:selectItem itemLabel="Escolha a Categoria"
						noSelectionOption="true" />
					<f:selectItems value="#{cadastraProdutoBean.categorias}"
						var="categoria" itemValue="#{categoria}"
						itemLabel="#{categoria.descricao}" />
				</p:selectOneMenu>

				<p:outputLabel for="cor" value="Cor" />
				<p:selectOneMenu id="cor" value="#{cadastraProdutoBean.produto.cor}">
					<f:selectItem itemLabel="Escolha a Cor" noSelectionOption="true" />
				</p:selectOneMenu>

				<p:outputLabel for="descricao" value="Descrição" />
				<p:inputTextarea id="descricao" value="#{cadastraProdutoBean.produto.descricao}" />

			</p:panelGrid>
		</div>
		
		<p:commandButton value="Cadastrar" icon="ui-icon-disk" />
	</h:form>

Conto com a vossa ajuda meus caros.

Criado 18 de agosto de 2017
Respostas 0
Participantes 1