Erro ao excluir objeto DataTable

2 respostas Resolvido
jsfjava
Dayson_Rodrigues

estou tendando excluir um objeto no meu dataTable e estou come esse erro.

MeuModel

package com.irmaosuspension.controleservico.modelo;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

import org.hibernate.validator.constraints.NotBlank;

import com.irmaosuspension.controleservico.enumeration.Categoria;

@Entity
@Table(name="modelo_carro")
public class ModeloCarro {

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long codigo;

	@NotNull
	@NotBlank
	@Size(max= 20,min = 2)
	@Column(nullable = false, length=20)
	private String nome;

	@Enumerated(EnumType.STRING)
	private Categoria categoria;

	@ManyToOne
	@JoinColumn(name = "codigo_fabricante")
	private Fabricante fabricante;

	public Long getCodigo() {
		return codigo;
	}

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

	public String getNome() {
		return nome;
	}

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

	public Fabricante getFabricante() {
		return fabricante;
	}

	public void setFabricante(Fabricante fabricante) {
		this.fabricante = fabricante;
	}

	public Categoria getCategoria() {
		return categoria;
	}

	public void setCategoria(Categoria categoria) {
		this.categoria = categoria;
	}

	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((codigo == null) ? 0 : codigo.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;
		ModeloCarro other = (ModeloCarro) obj;
		if (codigo == null) {
			if (other.codigo != null)
				return false;
		} else if (!codigo.equals(other.codigo))
			return false;
		return true;
	}

}

Meu xhtml

<ui:composition template="/WEB-INF/template/layoutPadrao.xhtml"
    xmlns="http://www.w3.org/1999/xhtml"
    xmlns:h="http://xmlns.jcp.org/jsf/html"
    xmlns:f="http://xmlns.jcp.org/jsf/core"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:p="http://primefaces.org/ui">
    <f:metadata>
		<f:viewAction action="#{consultaModeloCarro.inicializa}" />
	</f:metadata>

    <ui:define name="titulo">Pesquisa modelo de carro</ui:define>
    
    <ui:define name="corpo">
    	<h1>Pesquisa modelo de carro</h1>
    	
    	<h:form id="frmPesquisa">
    		<p:messages id="messages" autoUpdate="true" closable="true" />
	    	<p:toolbar style="margin-top: 20px">
	    		<p:toolbarGroup>
	    			<p:button value="Novo" outcome="pesquisaModeloCarro" />
	    		</p:toolbarGroup>
	    	</p:toolbar>
	    	
	    	<p:dataTable id="modelosCarroTable" style="margin-top: 20px" 
	    			value="#{consultaModeloCarro.modeloCarros}" var="modelocarros"
	    			emptyMessage="Nenhum modelo de carro foi encontrado." rows="20"
		    		paginator="true" paginatorAlwaysVisible="false" paginatorPosition="bottom">
	    		<p:column headerText="Código" style="text-align: center; width: 100px">
	    			<h:outputText  value="#{modelocarros.codigo}"/>
	    		</p:column>
	    		<p:column headerText="Modelo do Veículo" style="width: 200px; text-align:center">
	    			<h:outputText   value="#{modelocarros.nome}" />
	    		</p:column>
	    		<p:column headerText="Fabricante" style="width: 200px; text-align:center">
	    			<h:outputText  value="#{modelocarros.fabricante.nome}" />
	    		</p:column>
	    		<p:column headerText="Categoria" style="width: 200px; text-align:center">
	    			<h:outputText  value="#{modelocarros.categoria.descricao}" />
	    		</p:column>
	    		<p:column headerText="Editar / Excluir" style="width: 150px; text-align: center">
		    		<p:button outcome="cadastroModeloCarro" icon="ui-icon-pencil" title="Editar">
		    			<f:param name="modelocarros" value="#{modelocarros.codigo}" />
		    		</p:button> 
		    		-
		    		<p:commandButton icon="ui-icon-trash" title="Excluir" oncomplete="PF('confirmacaoExclusao').show()"
							process="@this" update=":frmPesquisa:confirmacaoExclusaoDialog">
						<f:setPropertyActionListener value="#{modelocarros}" target="#{consultaModeloCarro.modeloCarroSelecionado}" />
					</p:commandButton>
		    	</p:column>
		   	</p:dataTable>
	
		   	<p:confirmDialog id="confirmacaoExclusaoDialog" widgetVar="confirmacaoExclusao"
	        		message="Tem certeza que deseja excluir o modelo #{consultaModeloCarro.modeloCarroSelecionado.nome}?"  
	                header="Exclusão de modelo de carro" severity="alert">
	        	<p:button value="Não" onclick="PF('confirmacaoExclusao').hide(); return false;" />
	        	<p:commandButton value="Sim" action="#{consultaModeloCarro.excluir}" update=":frmPesquisa:modelosCarroTable" oncomplete="PF('confirmacaoExclusao').hide()" />
	    	</p:confirmDialog>
    	</h:form>
    </ui:define>
</ui:composition>


Bean
    package com.irmaosuspension.controleservico.controller;

import java.io.Serializable;
import java.util.List;

import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;

import org.omnifaces.util.Messages;

import com.irmaosuspension.controleservico.modelo.Carro;
import com.irmaosuspension.controleservico.service.CarroService;
import com.irmaosuspension.controleservico.util.NegocioException;

@Named
@ViewScoped
public class ConsultaCarroBean implements Serializable {

	private static final long serialVersionUID = 1L;

	@Inject
	private CarroService serviceCarro;

	private Carro carroselecionado;

	private List<Carro> carros;

	public void inicializa() {
		carros = serviceCarro.buscarTodos();
	}
	
	public void excluir(){
		try {
			serviceCarro.excluir(carroselecionado);
			carros.remove(carroselecionado);
			Messages.addGlobalInfo("Carro excluído com sucesso.");
			
		} catch (NegocioException e) {
			Messages.addGlobalError(e.getMessage());
		}
	}


	public List<Carro> getCarros() {
		return carros;
	}

	public Carro getCarroselecionado() {
		return carroselecionado;
	}

	public void setCarroselecionado(Carro carroselecionado) {
		this.carroselecionado = carroselecionado;
	}

}
ADVERTÊNCIA: /modeloCarro/pesquisaModeloCarro.xhtml @47,117 target="#{consultaModeloCarro.modeloCarroSelecionado}": Property 'modeloCarroSelecionado' not writable on type com.irmaosuspension.controleservico.controller.ConsultaModeloCarro
javax.el.PropertyNotWritableException: /modeloCarro/pesquisaModeloCarro.xhtml @47,117 target="#{consultaModeloCarro.modeloCarroSelecionado}": Property 'modeloCarroSelecionado' not writable on type com.irmaosuspension.controleservico.controller.ConsultaModeloCarro
	at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:136)
	at com.sun.faces.facelets.tag.jsf.core.SetPropertyActionListenerHandler$SetPropertyListener.processAction(SetPropertyActionListenerHandler.java:211)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:814)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIData.broadcast(UIData.java:1108)
	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:230)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	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: javax.el.PropertyNotWritableException: Property 'modeloCarroSelecionado' not writable on type com.irmaosuspension.controleservico.controller.ConsultaModeloCarro
	at javax.el.BeanELResolver$BeanProperty.write(BeanELResolver.java:314)
	at javax.el.BeanELResolver$BeanProperty.access$100(BeanELResolver.java:274)
	at javax.el.BeanELResolver.setValue(BeanELResolver.java:120)
	at com.sun.faces.el.DemuxCompositeELResolver._setValue(DemuxCompositeELResolver.java:255)
	at com.sun.faces.el.DemuxCompositeELResolver.setValue(DemuxCompositeELResolver.java:281)
	at org.apache.el.parser.AstValue.setValue(AstValue.java:202)
	at org.apache.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:257)
	at org.jboss.weld.el.WeldValueExpression.setValue(WeldValueExpression.java:64)
	at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:131)
	... 33 more
mar 14, 2017 10:07:07 PM com.sun.faces.context.AjaxExceptionHandlerImpl handlePartialResponseError
GRAVE: javax.el.PropertyNotWritableException: /modeloCarro/pesquisaModeloCarro.xhtml @47,117 target="#{consultaModeloCarro.modeloCarroSelecionado}": Property 'modeloCarroSelecionado' not writable on type com.irmaosuspension.controleservico.controller.ConsultaModeloCarro
	at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:136)
	at com.sun.faces.facelets.tag.jsf.core.SetPropertyActionListenerHandler$SetPropertyListener.processAction(SetPropertyActionListenerHandler.java:211)
	at javax.faces.event.ActionEvent.processListener(ActionEvent.java:88)
	at javax.faces.component.UIComponentBase.broadcast(UIComponentBase.java:814)
	at javax.faces.component.UICommand.broadcast(UICommand.java:300)
	at javax.faces.component.UIData.broadcast(UIData.java:1108)
	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:230)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:192)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:165)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:474)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:349)
	at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:495)
	at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
	at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:767)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1347)
	at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	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: javax.el.PropertyNotWritableException: Property 'modeloCarroSelecionado' not writable on type com.irmaosuspension.controleservico.controller.ConsultaModeloCarro
	at javax.el.BeanELResolver$BeanProperty.write(BeanELResolver.java:314)
	at javax.el.BeanELResolver$BeanProperty.access$100(BeanELResolver.java:274)
	at javax.el.BeanELResolver.setValue(BeanELResolver.java:120)
	at com.sun.faces.el.DemuxCompositeELResolver._setValue(DemuxCompositeELResolver.java:255)
	at com.sun.faces.el.DemuxCompositeELResolver.setValue(DemuxCompositeELResolver.java:281)
	at org.apache.el.parser.AstValue.setValue(AstValue.java:202)
	at org.apache.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:257)
	at org.jboss.weld.el.WeldValueExpression.setValue(WeldValueExpression.java:64)
	at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:131)
	... 33 more

2 Respostas

drsmachado
Solucao aceita

ADVERTÊNCIA: /modeloCarro/pesquisaModeloCarro.xhtml @47,117 target="#{consultaModeloCarro.modeloCarroSelecionado}": Property 'modeloCarroSelecionado' not writable on type com.irmaosuspension.controleservico.controller.ConsultaModeloCarro pode postar o código de ConsultaModeloCarro?

Dayson_Rodrigues

resolvido!

era meu BEAN estava so com get do modeloCarroSelecionado

Criado 15 de março de 2017
Ultima resposta 15 de mar. de 2017
Respostas 2
Participantes 2