1
Can anyone tell why the rendered Graphic image is giving error???
<p:dataGrid columns="3" value="#{projetistaBean.listaDeProjetistas}" var="projetista" styleClass="ui-datagrid" >
<h:commandLink>
<f:ajax render=":formProjetista:projetistaSelecionado" event="click" listener="#{projetistaBean.selecionarProjetistaAtual()}" />
<h:panelGrid columns="1" style="border: none; width: 160px; text-align: center; " >
<p:graphicImage value="/temp/#{projetista.id}.png" cache="false" width="75" height="75" />
<h:panelGroup>
<h:graphicImage value="resources/imagens/membroR3ePequeno.png" rendered="#{projetista.pertenceMembroR3e}" />
<h:graphicImage value="resources/imagens/membroOIAPequeno.png" rendered="#{projetista.pertenceMembroOIA}" style="margin-left: 4px;"/>
<h:graphicImage value="resources/imagens/membroAntacPequeno.png" rendered="#{projetista.pertenceMembroAntac}" style="margin-left: 4px;"/>
<h:graphicImage value="resources/imagens/ServicoConsultoriaPequeno.png" rendered="#{projetista.pertenceConsultor}" style="margin-left: 4px;"/>
<h:graphicImage value="resources/imagens/possuiEtiquetaAPequeno.png" rendered="#{projetista.pertenceEtiquetaA}" style="margin-left: 4px;"/>
<h:graphicImage value="resources/imagens/possuiEtiquetaBPequeno.pmg" style="margin-left: 4px;" rendered="#{projetista.mostrarEtiquetaB}" />
</h:panelGroup>
<h:outputText value="#{projetista.nome}"/>
</h:panelGrid>
</h:commandLink>
</p:dataGrid>
Here is the entity code I use to fetch Boolean for rendering:
@javax.persistence.Entity
@Table(name = "projetista")
public class Projetista extends com.labcon.r3e.entity.Entity{
@Id
@Column(name = "id", nullable = false)
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "nome", nullable = false)
private String nome;
@Column(name = "cidade", nullable = false)
private String cidade;
@Column(name = "email", nullable = false)
private String email;
@Column(name = "instituicao" , nullable = false)
private String instituicao;
@Column(name = "membro_r3e" , nullable = false)
private Integer membro_r3e;
@Column(name = "membro_antac" , nullable = false)
private Integer membro_antac;
@Column(name = "membro_oia" , nullable = false)
private Integer membro_oia;
@Column(name = "consultor" , nullable = false)
private Integer consultor;
@Column(name = "possui_projeto_a", nullable = false)
private Integer possui_projeto_a;
@Column(name = "possui_projeto_b" , nullable = false)
private Integer possui_projeto_b;
@Lob
@Basic(fetch= FetchType.LAZY)
private byte[] imagem;
public Projetista() {
}
public boolean getPertenceMembroR3e(){
return this.membro_r3e == 1;
}
public boolean getPertenceMembroAntac(){
return this.membro_antac == 1;
}
public boolean getPertenceMembroOIA(){
return this.membro_oia == 1;
}
public boolean getPertenceConsultor(){
return this.consultor == 1;
}
public boolean getPertenceEtiquetaA(){
return this.possui_projeto_a == 1;
}
public boolean getPertecenteEtiquetaB(){
return this.possui_projeto_b == 1;
}
public boolean getMostrarEtiquetaB(){
if(this.possui_projeto_a == 1){
return false;
}else return this.possui_projeto_b == 1;
}
Here is the stack trace:
java.lang.NullPointerException
at com.labcon.r3e.entity.Projetista.getPertenceMembroR3e(Projetista.java:77)
at sun.reflect.GeneratedMethodAccessor511.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:87)
at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
at org.apache.el.parser.AstValue.getValue(AstValue.java:182)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:184)
at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
at javax.faces.component.UIComponentBase.isRendered(UIComponentBase.java:413)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:297)
at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:105)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
at com.sun.faces.renderkit.html_basic.GridRenderer.renderRow(GridRenderer.java:185)
at com.sun.faces.renderkit.html_basic.GridRenderer.encodeChildren(GridRenderer.java:129)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1757)
at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:55)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)
at org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:424)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:125)
at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:501)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:950)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1040)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:607)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:313)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:744)
The problem is that your
Integer
is null. The fact of using the attributenullable=false
, It only stops you from saving the field with the null value, but it doesn’t stop you from searching for an entity in an inconsistent state. I advise to make a load in your base, setting as 0 these invalid records/columns.– Wakim
but all contents of the database are either 0 or 1 in these columns
– user13468
but I did the application level test to check if the columns were set to null. If they were returned false and it worked
– user13468
I believe that the best way to attack the root of the problem would be to change the Not Null property from the respective column to false, and then synchronize with the entities.
– Cold