Jsf - problema removendo item de um ArrayList

8 respostas
G

Olá Pessoal

Tenho um dataTable onde adiciono os contatos da pessoa numa lista… até ai blz

com a lista preenchida, quando clico no botão excluir, ao invés de remover o item desejado ele remove o que está acima dele

não entendo o que tá acontecendo… ele leva o objeto certo no método mas na hora que ele dá o remove deleta o Objeto errado!

Pesquisei em alguns foruns e vi que tem que implementar os metodos hashCode e o equals mesmo assim não esta funcionando.

Segue codigo:

package br.com.estub.boletim.modelo;

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

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.proxy.HibernateProxy;

@Entity
public class ItemBoletim implements Serializable {

	@Id
	@GeneratedValue
	private Long id;

	@Column(nullable = false)
	@Temporal(TemporalType.DATE)
	private Calendar data = Calendar.getInstance();

	private BigDecimal frete;

	private BigDecimal custoDeslocamento;

	private BigDecimal maoDeObraTercerizada;

	private BigDecimal refeicao;

	private BigDecimal hospedagem;

	private BigDecimal documentacao;

	private BigDecimal outrasDespesas;

	@ManyToOne
	private Boletim boletim;

	public Long getId() {
		return id;
	}

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

	public Calendar getData() {
		return data;
	}

	public void setData(Calendar data) {
		this.data = data;
	}

	public BigDecimal getFrete() {
		return frete;
	}

	public void setFrete(BigDecimal frete) {
		this.frete = frete;
	}

	public BigDecimal getCustoDeslocamento() {
		return custoDeslocamento;
	}

	public void setCustoDeslocamento(BigDecimal custoDeslocamento) {
		this.custoDeslocamento = custoDeslocamento;
	}

	public BigDecimal getMaoDeObraTercerizada() {
		return maoDeObraTercerizada;
	}

	public void setMaoDeObraTercerizada(BigDecimal maoDeObraTercerizada) {
		this.maoDeObraTercerizada = maoDeObraTercerizada;
	}

	public BigDecimal getRefeicao() {
		return refeicao;
	}

	public void setRefeicao(BigDecimal refeicao) {
		this.refeicao = refeicao;
	}

	public BigDecimal getHospedagem() {
		return hospedagem;
	}

	public void setHospedagem(BigDecimal hospedagem) {
		this.hospedagem = hospedagem;
	}

	public BigDecimal getDocumentacao() {
		return documentacao;
	}

	public void setDocumentacao(BigDecimal documentacao) {
		this.documentacao = documentacao;
	}

	public BigDecimal getOutrasDespesas() {
		return outrasDespesas;
	}

	public void setOutrasDespesas(BigDecimal outrasDespesas) {
		this.outrasDespesas = outrasDespesas;
	}

	public Boletim getBoletim() {
		return boletim;
	}

	public void setBoletim(Boletim boletim) {
		this.boletim = boletim;
	}

	@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;
		ItemBoletim other = (ItemBoletim) obj;
		if (id == null) {
			if (other.id != null)
				return false;
		} else if (!id.equals(other.id))
			return false;
		return true;
	}
	
	

//    @Override    
//    public boolean equals(Object obj) {    
//        if (this == obj)    
//            return true;    
//        if (obj == null)    
//            return false;  
//        if(obj.getClass().getName().toLowerCase().contains("javassist")){  
//            obj = (Object) ((HibernateProxy) obj).getHibernateLazyInitializer().getImplementation();  
//    }  
//        if (getClass() != obj.getClass())    
//            return false;    
//        ItemBoletim other = (ItemBoletim) obj;    
//        if (id == null) {    
//            if (other.id != null)    
//                return false;    
//        } else if (!id.equals(other.id))    
//            return false;    
//        return true;    
//    }  
	
	

}

Metodo que exlui meu item

public void acaoExcluirItem(ItemBoletim itemBoletim) {

		System.out.println("*******EXLUINDO ITEM DA LISTA******");
		this.boletim.getItens().remove(itemBoletim);

	}

xhtml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.prime.com.tr/ui">

<ui:composition template="_templete.xhtml">

	<ui:define name="titulo">Cadastra Boletim de Caixa</ui:define>
	<ui:define name="conteudo">

		<h2></h2>

		<h:form id="formulario">
			<h:panelGrid columns="2">


				<h:outputLabel value="Contrato:* " for="contrato" />
				<p:inputMask id="contrato" value="#{boletimMB.contrato.codigo}"
					mask="a*-99/9999" required="true" label="Campo Contrato" />


				<h:outputLabel value="Boletim:* " for="boletim" />
				<p:inputText id="boletim" value="#{boletimMB.boletim.codigo}"
					required="true" label="Campo Boletim" />

			</h:panelGrid>

			<h:form id="formItem">
				<p:fieldset legend="Itens do Boletim" toggleable="true">
					<h:panelGrid columns="4">

						<h:outputLabel value="Data:* " for="data" />
						<p:calendar pattern="dd/MM/yyyy" mode="popup" showOn="button"
							id="data" required="true" label="Campo Data"
							value="#{boletimMB.item.data.time}">
							<f:convertDateTime pattern="dd/MM/yyyy" />
						</p:calendar>



						<h:outputLabel value="Frete: " for="frete" />
						<p:inputText id="frete" value="#{boletimMB.item.frete}" />

						<h:outputLabel value="Custo de Deslocamento: " for="cust" />
						<p:inputText id="cust" value="#{boletimMB.item.custoDeslocamento}" />

						<h:outputLabel value="Mão de Obra Tercerizada: " for="maoDeObra" />
						<p:inputText id="maoDeObra"
							value="#{boletimMB.item.maoDeObraTercerizada}" />

						<h:outputLabel value="Refeição: " for="ref" />
						<p:inputText id="ref" value="#{boletimMB.item.refeicao}" />

						<h:outputLabel value="Hospedagem: " for="hosp" />
						<p:inputText id="hosp" value="#{boletimMB.item.hospedagem}" />

						<h:outputLabel value="Documentação: " for="doc" />
						<p:inputText id="doc" value="#{boletimMB.item.documentacao}" />

						<h:outputLabel value="Outras Despesas: " for="outras" />
						<p:inputText id="outras" value="#{boletimMB.item.outrasDespesas}" />

						<f:facet name="footer">
							<h:panelGroup layout="block" style="text-align: center">
								<p:commandButton ajax="false" action="#{boletimMB.guardaItem}"
									id="btnIncluir" value="Guarda Item"></p:commandButton>
							</h:panelGroup>
						</f:facet>

					</h:panelGrid>
				</p:fieldset>



				<p:dataTable id="listar" var="item"
					value="#{boletimMB.boletim.itens}" widgetVar="carsTable"
					paginator="true" rows="3" rowsPerPageTemplate="5,10,15"
					selectionMode="single">

					<f:facet name="header">
				Itens Boletim
			</f:facet>
					<p:column>
						<f:facet name="header">Data</f:facet>
						<h:outputText value="#{item.data.time}"></h:outputText>

					</p:column>
					<p:column headerText="Frete">
						<h:outputText value="#{item.frete}">
							<f:convertNumber type="currency" currencySymbol="R$ "
								locale="pt_BR"></f:convertNumber>
						</h:outputText>
					</p:column>

					<p:column headerText="Custo de Deslocamento">
						<h:outputText value="#{item.custoDeslocamento}">
							<f:convertNumber type="currency" currencySymbol="R$ "
								locale="pt_BR"></f:convertNumber>
						</h:outputText>
					</p:column>


					<p:column headerText="Mão de Obra Tercerizada">
						<h:outputText value="#{item.maoDeObraTercerizada}">
							<f:convertNumber type="currency" currencySymbol="R$ "
								locale="pt_BR"></f:convertNumber>
						</h:outputText>
					</p:column>


					<p:column headerText="refeicao">
						<h:outputText value="#{item.refeicao}">
							<f:convertNumber type="currency" currencySymbol="R$ "
								locale="pt_BR"></f:convertNumber>
						</h:outputText>
					</p:column>

					<p:column headerText="Hospedagem">
						<h:outputText value="#{item.hospedagem}">
							<f:convertNumber type="currency" currencySymbol="R$ "
								locale="pt_BR"></f:convertNumber>
						</h:outputText>
					</p:column>

					<p:column headerText="Documentação">
						<h:outputText value="#{item.documentacao}">
							<f:convertNumber type="currency" currencySymbol="R$ "
								locale="pt_BR"></f:convertNumber>
						</h:outputText>
					</p:column>

					<p:column headerText="Outras Despesas">
						<h:outputText value="#{item.outrasDespesas}">
							<f:convertNumber type="currency" currencySymbol="R$ "
								locale="pt_BR"></f:convertNumber>
						</h:outputText>
					</p:column>


					<p:column>
						<f:facet name="header">
							<h:outputText value="Ações" />
						</f:facet>
						<h:panelGroup>
							
							<p:commandButton type="button" value="Excluir"
								onclick="conf#{item.id}.show()" image="ui-icon-close">
							</p:commandButton>


							<p:confirmDialog message="Deseja excluir este registro?"
								showEffect="bounce" hideEffect="explode"
								header="Confirmação de Exclusão" severity="alert"
								widgetVar="conf#{item.id}">

								<p:commandButton ajax="false" type="push" value="Sim"
									action="#{boletimMB.acaoExcluirItem(item)}" immediate="true"
									image="ui-icon-check">
									<f:param value="#{item.id}" name="itemId" />
								</p:commandButton>

								<p:commandButton value="Não" onclick="conf#{item.id}.hide()"
									type="button" image="ui-icon-close" />
							</p:confirmDialog>
						</h:panelGroup>
					</p:column>

					<f:facet name="footer">
						<h:panelGroup layout="block" style="text-align: center">
							<p:commandButton action="#{boletimMB.acaoSalvar}" value="Salvar">
								<!-- <f:ajax execute=":formulario" render=":formulario :formulario:formularioItem"></f:ajax> -->
							</p:commandButton>
						</h:panelGroup>
					</f:facet>

				</p:dataTable>
			</h:form>
		</h:form>
	</ui:define>
</ui:composition>
</html>

8 Respostas

Rodrigo_Sasaki

Cara, eu tive um problema parecido uma vez, sinceramente não conseguia entender o que ocorria, eu cheguei a debugar e tudo mais, mas ocorria algo parecido com o que você descreveu…

No final, eu passei a enviar o índice do registro na lista, e removia o registro pelo índice mesmo.

G

Como eu faria para poder passar o indice no xhtml?

Eu passo o objeto item dessa forma:
action="#{boletimMB.acaoExcluirItem(item)}"

Rodrigo_Sasaki

na sua tag dataTable deve haver uma propriedade rowKeyVar, que você associa pro nome que quiser… e aí envia. assim:<p:dataTable id="table" rowKeyVar="rowKey" /> e aí na chamada ao método: action="#{boletimMB.acaoExcluirItem(rowKey)}"

J

Recebo qual item quero alterar ou excluir da minha lista desta forma

<h:column>
			<f:facet name="header">
				<h:outputText value="Alterar"></h:outputText>
			</f:facet>

			<h:commandLink accesskey="nome"
				actionListener="#{cadaped.alteraProduto}">
				<h:outputText value="(alterar)"></h:outputText>
				<f:param id="editId" name="id" value="#{f.AC88A_ID}" />
			</h:commandLink>
		</h:column>
public void alteraProduto(ActionEvent event){
		UIComponent link = event.getComponent();
		UIParameter param = (UIParameter) link.findComponent("editId");
}
G

Olá digaoneves !

Fiz o que vc falou mas esta dando erro, se o metodo que esta recebendo.

public void acaoExcluirItem(String itemBoletim) {

		System.out.println("*******EXLUINDO ITEM DA LISTA******");
		this.boletim.getItens().remove(itemBoletim);

	}

Esse metodo esta recebendo uma String não sei se esta certo mas eu ja coloquei Integer, Long e tambem não funcionou.

Rodrigo_Sasaki

Cara, acabei de criar esse botão aqui e funcionou normalmente:<h:commandButton id="botao" value="Opa" action="#{meuMB.teste(rowKey)}">E meu método está assim: public void teste(Integer number){ System.out.println(number); } você fez algo diferente do que eu fiz aí?

G

Fiz o que vc falou e esta dando o seguinte erro:

0

04/06/2012 16:55:41 org.apache.catalina.core.AprLifecycleListener init
INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Program Files\Java\jre6\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre6/bin/client;C:/Program Files/Java/jre6/bin;C:/Program Files/Java/jre6/lib/i386;C:\Windows\system32;C:\Windows;C:\Windows\system32\wbem;D:\oracle\product\10.2.0\client_1\bin;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\Common Files\Roxio Shared\DLLShared;C:\Program Files\Common Files\Roxio Shared\OEM\DLLShared;C:\Program Files\Common Files\Roxio Shared\OEM\12.0\DLLShared;C:\Program Files\Roxio\OEM\AudioCore;C:\Program Files\MySQL\MySQL Server 5.0\bin;C:\maven\bin;D:\Eclipse Indigo\eclipse;;.
04/06/2012 16:55:41 org.apache.tomcat.util.digester.SetPropertiesRule begin
AVISO: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:prjEstubBoletimDeCaixa' did not find a matching property.
04/06/2012 16:55:41 org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["http-bio-8080"]
04/06/2012 16:55:41 org.apache.coyote.AbstractProtocolHandler init
INFO: Initializing ProtocolHandler ["ajp-bio-8009"]
04/06/2012 16:55:41 org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 400 ms
04/06/2012 16:55:41 org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
04/06/2012 16:55:41 org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/7.0.12
04/06/2012 16:55:54 org.apache.catalina.core.ApplicationContext log
INFO: Initializing Spring root WebApplicationContext
04/06/2012 16:55:55 com.sun.faces.config.ConfigureListener contextInitialized
INFO: Inicializando Mojarra 2.0.3 (FCS b03) para o contexto '/prjEstubBoletimDeCaixa'
04/06/2012 16:55:56 com.sun.faces.spi.InjectionProviderFactory createInstance
INFO: JSF1048: Anotações PostConstruct/PreDestroy presentes.  Os métodos ManagedBeans marcados com essas anotações informarão as anotações processadas.
04/06/2012 16:55:56 org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["http-bio-8080"]
04/06/2012 16:55:56 org.apache.coyote.AbstractProtocolHandler start
INFO: Starting ProtocolHandler ["ajp-bio-8009"]
04/06/2012 16:55:56 org.apache.catalina.startup.Catalina start
INFO: Server startup in 14511 ms
04/06/2012 16:56:36 com.sun.faces.application.ActionListenerImpl processAction
GRAVE: java.lang.NullPointerException
javax.faces.el.MethodNotFoundException: java.lang.NullPointerException
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:100)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)
	at javax.faces.component.UICommand.broadcast(UICommand.java:311)
	at javax.faces.component.UIData.broadcast(UIData.java:912)
	at org.primefaces.component.datatable.DataTable.broadcast(DataTable.java:630)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)
	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:922)
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:74)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NullPointerException
	at java.lang.Class.isAssignableFrom(Native Method)
	at org.apache.el.util.ReflectionUtil.isAssignableFrom(ReflectionUtil.java:299)
	at org.apache.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:172)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:251)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84)
	... 26 more
04/06/2012 16:56:36 com.sun.faces.lifecycle.ApplyRequestValuesPhase execute
AVISO: #{boletimMB.acaoExcluirItem(rowKey)}: java.lang.NullPointerException
javax.faces.FacesException: #{boletimMB.acaoExcluirItem(rowKey)}: java.lang.NullPointerException
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:106)
	at javax.faces.component.UICommand.broadcast(UICommand.java:311)
	at javax.faces.component.UIData.broadcast(UIData.java:912)
	at org.primefaces.component.datatable.DataTable.broadcast(DataTable.java:630)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)
	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:922)
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:74)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)
Caused by: javax.faces.el.MethodNotFoundException: java.lang.NullPointerException
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:100)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)
	... 25 more
Caused by: java.lang.NullPointerException
	at java.lang.Class.isAssignableFrom(Native Method)
	at org.apache.el.util.ReflectionUtil.isAssignableFrom(ReflectionUtil.java:299)
	at org.apache.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:172)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:251)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84)
	... 26 more
04/06/2012 16:56:36 org.apache.catalina.core.StandardWrapperValve invoke
GRAVE: Servlet.service() for servlet [Faces Servlet] in context with path [/prjEstubBoletimDeCaixa] threw exception [java.lang.NullPointerException] with root cause
java.lang.NullPointerException
	at java.lang.Class.isAssignableFrom(Native Method)
	at org.apache.el.util.ReflectionUtil.isAssignableFrom(ReflectionUtil.java:299)
	at org.apache.el.util.ReflectionUtil.getMethod(ReflectionUtil.java:172)
	at org.apache.el.parser.AstValue.invoke(AstValue.java:251)
	at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278)
	at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:102)
	at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:84)
	at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:98)
	at javax.faces.component.UICommand.broadcast(UICommand.java:311)
	at javax.faces.component.UIData.broadcast(UIData.java:912)
	at org.primefaces.component.datatable.DataTable.broadcast(DataTable.java:630)
	at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:781)
	at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:922)
	at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:74)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:97)
	at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:114)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:308)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

meu xhtml

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!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:f="http://java.sun.com/jsf/core"
	xmlns:h="http://java.sun.com/jsf/html"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.prime.com.tr/ui">

<ui:composition template="_templete.xhtml">

	<ui:define name="titulo">Cadastra Boletim de Caixa</ui:define>
	<ui:define name="conteudo">

		<h2></h2>

		<h:form id="formulario">
			<h:panelGrid columns="2">


				<h:outputLabel value="Contrato:* " for="contrato" />
				<p:inputMask id="contrato" value="#{boletimMB.contrato.codigo}"
					mask="a*-99/9999" required="true" label="Campo Contrato" />


				<h:outputLabel value="Boletim:* " for="boletim" />
				<p:inputText id="boletim" value="#{boletimMB.boletim.codigo}"
					required="true" label="Campo Boletim" />

			</h:panelGrid>

			<h:form id="formItem">
				<p:fieldset legend="Itens do Boletim" toggleable="true">
					<h:panelGrid columns="4">

						<h:outputLabel value="Data:* " for="data" />
						<p:calendar pattern="dd/MM/yyyy" mode="popup" showOn="button"
							id="data" required="true" label="Campo Data"
							value="#{boletimMB.item.data.time}">
							<f:convertDateTime pattern="dd/MM/yyyy" />
						</p:calendar>



						<h:outputLabel value="Frete: " for="frete" />
						<p:inputText id="frete" value="#{boletimMB.item.frete}" />

						<h:outputLabel value="Custo de Deslocamento: " for="cust" />
						<p:inputText id="cust" value="#{boletimMB.item.custoDeslocamento}" />

						<h:outputLabel value="Mão de Obra Tercerizada: " for="maoDeObra" />
						<p:inputText id="maoDeObra"
							value="#{boletimMB.item.maoDeObraTercerizada}" />

						<h:outputLabel value="Refeição: " for="ref" />
						<p:inputText id="ref" value="#{boletimMB.item.refeicao}" />

						<h:outputLabel value="Hospedagem: " for="hosp" />
						<p:inputText id="hosp" value="#{boletimMB.item.hospedagem}" />

						<h:outputLabel value="Documentação: " for="doc" />
						<p:inputText id="doc" value="#{boletimMB.item.documentacao}" />

						<h:outputLabel value="Outras Despesas: " for="outras" />
						<p:inputText id="outras" value="#{boletimMB.item.outrasDespesas}" />

						<f:facet name="footer">
							<h:panelGroup layout="block" style="text-align: center">
								<p:commandButton ajax="false" action="#{boletimMB.guardaItem}"
									id="btnIncluir" value="Guarda Item"></p:commandButton>
							</h:panelGroup>
						</f:facet>

					</h:panelGrid>
				</p:fieldset>



				<p:dataTable id="listar" var="item"
					value="#{boletimMB.boletim.itens}" widgetVar="carsTable"
					paginator="true" rows="3" rowsPerPageTemplate="5,10,15"
					selectionMode="single" rowKeyVar="rowKey">

					<f:facet name="header">
				Itens Boletim
			</f:facet>
					<p:column>
						<f:facet name="header">Data</f:facet>
						<h:outputText value="#{item.data.time}"></h:outputText>

					</p:column>
					<p:column headerText="Frete">
						<h:outputText value="#{item.frete}">
							<f:convertNumber type="currency" currencySymbol="R$ "
								locale="pt_BR"></f:convertNumber>
						</h:outputText>
					</p:column>

					<p:column headerText="Custo de Deslocamento">
						<h:outputText value="#{item.custoDeslocamento}">
							<f:convertNumber type="currency" currencySymbol="R$ "
								locale="pt_BR"></f:convertNumber>
						</h:outputText>
					</p:column>


					<p:column headerText="Mão de Obra Tercerizada">
						<h:outputText value="#{item.maoDeObraTercerizada}">
							<f:convertNumber type="currency" currencySymbol="R$ "
								locale="pt_BR"></f:convertNumber>
						</h:outputText>
					</p:column>


					<p:column headerText="refeicao">
						<h:outputText value="#{item.refeicao}">
							<f:convertNumber type="currency" currencySymbol="R$ "
								locale="pt_BR"></f:convertNumber>
						</h:outputText>
					</p:column>

					<p:column headerText="Hospedagem">
						<h:outputText value="#{item.hospedagem}">
							<f:convertNumber type="currency" currencySymbol="R$ "
								locale="pt_BR"></f:convertNumber>
						</h:outputText>
					</p:column>

					<p:column headerText="Documentação">
						<h:outputText value="#{item.documentacao}">
							<f:convertNumber type="currency" currencySymbol="R$ "
								locale="pt_BR"></f:convertNumber>
						</h:outputText>
					</p:column>

					<p:column headerText="Outras Despesas">
						<h:outputText value="#{item.outrasDespesas}">
							<f:convertNumber type="currency" currencySymbol="R$ "
								locale="pt_BR"></f:convertNumber>
						</h:outputText>
					</p:column>


					<p:column>
						<f:facet name="header">
							<h:outputText value="Ações" />
						</f:facet>
						<h:panelGroup>
							
							<p:commandButton type="button" value="Excluir"
								onclick="conf#{item.id}.show()" image="ui-icon-close">
							</p:commandButton>


							<p:confirmDialog message="Deseja excluir este registro?"
								showEffect="bounce" hideEffect="explode"
								header="Confirmação de Exclusão" severity="alert"
								widgetVar="conf#{item.id}">

								<p:commandButton ajax="false" type="push" value="Sim"
									action="#{boletimMB.acaoExcluirItem(rowKey)}" immediate="true"
									image="ui-icon-check">
								</p:commandButton>

								<p:commandButton value="Não" onclick="conf#{item.id}.hide()"
									type="button" image="ui-icon-close" />
							</p:confirmDialog>
						</h:panelGroup>
					</p:column>

					<f:facet name="footer">
						<h:panelGroup layout="block" style="text-align: center">
							<p:commandButton action="#{boletimMB.acaoSalvar}" value="Salvar">
								<!-- <f:ajax execute=":formulario" render=":formulario :formulario:formularioItem"></f:ajax> -->
							</p:commandButton>
						</h:panelGroup>
					</f:facet>

				</p:dataTable>
			</h:form>
		</h:form>
	</ui:define>
</ui:composition>
</html>

meu bean

package br.com.estub.boletim.mb;

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

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import org.hibernate.cache.ReadWriteCache.Item;

import br.com.estub.boletim.modelo.Boletim;
import br.com.estub.boletim.modelo.Contrato;
import br.com.estub.boletim.modelo.ItemBoletim;
import br.com.estub.boletim.service.BoletimService;
import br.com.estub.boletim.util.JSFUtil;

@ManagedBean(name = "boletimMB")
@ViewScoped
public class BoletimMB implements Serializable {

	private static final long serialVersionUID = 1L;

	@ManagedProperty("#{boletimService}")
	private BoletimService modelo;

	private Boletim boletim = new Boletim();
	private List<Boletim> boletins = null;
	private ItemBoletim item = new ItemBoletim();
	private Contrato contrato = new Contrato();

	public BoletimService getModelo() {
		return modelo;
	}

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

	public Boletim getBoletim() {
		return boletim;
	}

	public void setBoletim(Boletim boletim) {
		this.boletim = boletim;
	}

	public List<Boletim> getBoletins() {

		if (this.boletins == null) {
			this.boletins = modelo.listaTodos();
		}
		return this.boletins;
	}

	public void setBoletins(List<Boletim> boletins) {
		this.boletins = boletins;
	}

	public ItemBoletim getItem() {
		return item;
	}

	public void setItem(ItemBoletim item) {
		this.item = item;
	}

	public Contrato getContrato() {
		return contrato;
	}

	public void setContrato(Contrato contrato) {
		this.contrato = contrato;
	}

	public String acaoSalvar() {
		System.out.println("*****SALVANDO BOLETIM*****");
		this.boletim.setContrato(contrato);
		this.modelo.salvar(this.boletim);

		this.setBoletim(new Boletim());

		return "boletimListar.xhtml";
	}

	public void alterar() {

		this.modelo.altera(boletim);
	}

	public void guardaItem() {

		this.item.setBoletim(boletim);
		this.boletim.getItens().add(this.item);

		this.item = new ItemBoletim();

	}

	public void acaoExcluirItem(Integer itemBoletim) {

		System.out.println("*******EXLUINDO ITEM DA LISTA******");
		System.out.println(itemBoletim);
		//this.boletim.getItens().remove(itemBoletim);

	}

	
	public String acaoExcluir() {

		System.out.println("***EXCLUINDO BOLETIM***");
		Long id = JSFUtil.getParametroLong("boletimId");
		Boletim objetoDoBanco = this.modelo.getBuscaPorId(id);
		this.modelo.remover(objetoDoBanco);
		this.boletins = null;

		return "boletimListar";
	}

	public String acaoAbrirAlteracao() {

		Long id = JSFUtil.getParametroLong("boletimId");
		Boletim objetoDoBanco = this.modelo.getBuscaPorId(id);
		this.setBoletim(objetoDoBanco);

		return "boletim";
	}

	public void limpaFormulario() {

		this.setBoletim(new Boletim());
		this.setContrato(new Contrato());
		this.setItem(new ItemBoletim());
	}

}
Rodrigo_Sasaki

Evite postar todo o seu código, cara… a não ser que seja necessário. Fica difícil de achar seu problema, poste só o código que for relevante.

Vamos lá, veja essa parte da sua stacktrace

java.lang.NullPointerException
at java.lang.Class.isAssignableFrom(Native Method)

Está sendo lançada uma NullPointerException, aí, creio eu que provavelmente em um método equals(), verifique o equals da classe em questão, e veja se é lá que a exceção é lançada.

Criado 4 de junho de 2012
Ultima resposta 4 de jun. de 2012
Respostas 8
Participantes 3