Rendered of the first faces giving error while recovering entity Boolean

Asked

Viewed 259 times

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 attribute nullable=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.

  • but all contents of the database are either 0 or 1 in these columns

  • but I did the application level test to check if the columns were set to null. If they were returned false and it worked

  • 1

    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.

1 answer

2

The solution to the problem, as suggested by the Wakin user yesterday, was to set Integers values that were null

Browser other questions tagged

You are not signed in. Login or sign up in order to post.