Pessoal, estou quebrando a cabeça aqui, mas o negocio nao ta indo
Estou montando um table com o primefaces e quando eu coloco o atributo selection na tabela, ele da nullpointer.
Segue código:
<h:form id="form_pesquisa_codigo_produto">
<p:growl id="msg" showDetail="false" escape="false" />
<p:panelGrid styleClass="semBorda" columns="1">
<h:outputLabel value="#{msgs.global_selecione_tipo_pesquisa}:" for="select_tipo_pesquisa_codigo_produto" />
<p:selectOneMenu id="select_tipo_pesquisa_codigo_produto" required="true" requiredMessage="#{msgs.global_campo_obrigatorio}"
value="#{criarCotacaoController.tipoPesquisaSelecionada}"
converter="simpleEntityConverter"
style="width:210px; margin-left:8px;">
<f:selectItems value="#{criarCotacaoController.listaTipoPesquisaCodigoProduto}" />
</p:selectOneMenu>
</p:panelGrid>
<p:panelGrid styleClass="semBorda" columns="3">
<p:inputText id="codigo_descricao_procurado" required="true" requiredMessage="#{msgs.global_campo_obrigatorio}"
value="#{criarCotacaoController.codigoDescricaoProcurado}" style="width:250px;" />
<h:commandButton id="procurar_codigo_produto" value="#{msgs.web_global_buscar}"
actionListener="#{criarCotacaoController.procurarCodigoProduto()}"
onclick="statusDialog.show();" oncomplete="javascript:fecha(xhr, status, args);"
styleClass="btn_procurar_user" update=":form_pesquisa_codigo_produto" />
</p:panelGrid>
<br />
<p:dataTable id="tabela_resultado_pesquisa_produto"
styleClass="tabela_resultado_pesquisa" var="produto"
value="#{criarCotacaoController.listaProdutoModel}"
selection="#{criarCotacaoController.produtoSelecionado}"
paginator="true" rows="10" emptyMessage="#{msgs.global_nenhum_registro}">
<f:facet name="header">
<h:outputLabel value="#{msgs.global_resultado_pesquisa}" />
</f:facet>
<p:column selectionMode="single" style="width:18px" />
<p:column
style="max-width: 250px; min-width: 250px; overflow: hidden; text-align: center">
<f:facet name="header">
<h:outputText value="#{msgs.global_codigo_produto}" />
</f:facet>
<h:outputText value="#{produto.idProduto}" />
</p:column>
<p:column
style="max-width: 400px; min-width: 400px; overflow: hidden">
<f:facet name="header">
<h:outputText value="#{msgs.global_descricao_produto}" />
</f:facet>
<h:outputText value="#{produto.descricaoProduto}" />
</p:column>
</p:dataTable>
</h:form>
Segue o código do meu BEAN onde eu faço a busca:
public void procurarCodigoProduto() {
setListaProdutoPesquisado(cotacaoService.getListaProdutoPorIDouDescricao(""));
listaProdutoModel = new ProdutoDataModel(listaProdutoPesquisado);
requestContext = RequestContext.getCurrentInstance();
requestContext.addCallbackParam("fechar", false);
}
Minha classe ProdutoDataModel:
public class ProdutoDataModel extends ListDataModel<Produto> implements SelectableDataModel<Produto> {
public ProdutoDataModel() {
}
public ProdutoDataModel(List<Produto> data) {
super(data);
}
@SuppressWarnings("unchecked")
@Override
public Produto getRowData(String rowKey) {
List<Produto> listaProdutos = (List<Produto>) getWrappedData();
for(Produto prod : listaProdutos) {
if(prod.getDescricaoProduto().equals(rowKey)){
return prod;
}
}
return null;
}
@Override
public Object getRowKey(Produto produto) {
return produto.getDescricaoProduto();
}
}
e por fim, minha classe produto:
@Entity
@Table(name = "PRODUTO")
public class Produto implements Serializable {
/**
*
*/
private static final long serialVersionUID = 8000669162389766673L;
@Id
@Column(name = "ID_PRODUTO")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer idProduto;
@Column(name = "DESCRICAO_PRODUTO", unique = true)
private String descricaoProduto;
public Integer getIdProduto() {
return idProduto;
}
public void setIdProduto(Integer idProduto) {
this.idProduto = idProduto;
}
public String getDescricaoProduto() {
return descricaoProduto;
}
public void setDescricaoProduto(String descricaoProduto) {
this.descricaoProduto = descricaoProduto;
}
@Override
public String toString() {
return "Produto [idProduto=" + idProduto + ", descricaoProduto="
+ descricaoProduto + "]";
}
@Override
public Produto clone() {
Produto clone = null;
try {
clone = (Produto) super.clone();
} catch (CloneNotSupportedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return clone;
}
}
Segue o erro:
INFO: 13:36:18,433 ERROR MyFilterSecurityInterceptor:64 - Exception: javax.servlet.ServletException
javax.servlet.ServletException
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1542)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:368)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:109)
at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at br.com.gd.bpp.security.MyFilterSecurityInterceptor.invoke(MyFilterSecurityInterceptor.java:62)
at br.com.gd.bpp.security.MyFilterSecurityInterceptor.doFilter(MyFilterSecurityInterceptor.java:42)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:97)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:100)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:78)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:119)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:54)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:35)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:187)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:105)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:79)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.session.ConcurrentSessionFilter.doFilter(ConcurrentSessionFilter.java:109)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.access.channel.ChannelProcessingFilter.doFilter(ChannelProcessingFilter.java:109)
at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:380)
at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:169)
at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237)
at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:849)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
at br.com.gd.bpp.controller.datamodel.ProdutoDataModel.getRowData(ProdutoDataModel.java:26)
at br.com.gd.bpp.controller.datamodel.ProdutoDataModel.getRowData(ProdutoDataModel.java:1)
at org.primefaces.component.datatable.DataTable.getRowData(DataTable.java:811)
at org.primefaces.component.datatable.feature.SelectionFeature.decodeSingleSelection(SelectionFeature.java:46)
at org.primefaces.component.datatable.feature.SelectionFeature.decode(SelectionFeature.java:37)
at org.primefaces.component.datatable.DataTableRenderer.decode(DataTableRenderer.java:53)
at javax.faces.component.UIComponentBase.decode(UIComponentBase.java:787)
at org.primefaces.component.api.UIData.processDecodes(UIData.java:224)
at javax.faces.component.UIForm.processDecodes(UIForm.java:225)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1176)
at org.primefaces.component.dialog.Dialog.processDecodes(Dialog.java:352)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1176)
at javax.faces.component.UIComponentBase.processDecodes(UIComponentBase.java:1176)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:933)
at com.sun.faces.lifecycle.ApplyRequestValuesPhase.execute(ApplyRequestValuesPhase.java:78)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593)
... 60 more
Alguém poderia me dar uma luz por favor?
Estou sem saber oq fazer…