Jsf - problema removendo item de um ArrayList

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>

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.

Como eu faria para poder passar o indice no xhtml?

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

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)}"

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");
}

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.

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í?

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

[code]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)

[/code]

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());
	}

}

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[quote]java.lang.NullPointerException
at java.lang.Class.isAssignableFrom(Native Method) [/quote]

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.