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.