ManagedBean e ManagedProperty NullPointerException

Bom dia galera!

Estou tendo um problema com NullPointerException, em um ManagedProperty…

Tenho um formulario de cadastro de cliente, nele tem outro managedbean que é o comboBox (estado e cidade)…
E ao implementar o managedproperty começou dar erro.

Olha como está meu código:

[code]NovoClienteBean.java:

@ManagedBean(name=“novoClienteBean”)
@ViewScoped
public class NovoClienteBean implements Serializable {
private String codigo;
private String razao;
private String cnpj;
private String ie;
private String nome;
private String email;
private String endereco;
private String bairro;
@ManagedProperty(value="#{comboBean.estado}")
private Estado estado;
@ManagedProperty(value="#{comboBean.cidade}")
private Cidade cidade;
private String cep;
…[/code]

[code]clientes.xhtml:

<p:row>
<p:column styleClass=“formu”>
<h:outputLabel for=“estado” value=“Estado” />
</p:column>
<p:column>


<p:selectOneMenu id=“estado” value="#{comboBean.estado}" converter="#{converterEstado}" >
<f:selectItem itemLabel=“Selecione” />
<f:selectItems value="#{comboBean.estados}" var=“e” itemValue="#{e}" itemLabel="#{e.est_nome}" />
<f:ajax render=“cidade” event=“change” listener="#{comboBean.listaCidades}" />
</p:selectOneMenu>


<p:message id=“estadoMessage” for=“estadoMessage” />

</p:column>
</p:row>[/code]

[code]converterEstado.java:

@FacesConverter(value = “converterEstado”)
public class ConverterEstado implements Converter {

@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
    if (value != null && !value.equals("")) {
        EstadoDao estDao = new EstadoDao();
        return estDao.getEstadoById(Long.valueOf(value));
    }
    return null;
}

@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
    if (value instanceof Estado) {
        Estado estado = (Estado) value;
        return String.valueOf(estado.getEst_id());
    }
    return "";
}

}[/code]

[code]converterCidade.java:

@FacesConverter(value=“converterCidade”)
public class ConverterCidade implements Converter {

@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) {
    if (value != null && !value.equals("")) {
        CidadeDao cidDao = new CidadeDao();
        return cidDao.getCidadeById(Long.valueOf(value));
    }
    return null;
}

@Override
public String getAsString(FacesContext context, UIComponent component, Object value) {
    if (value instanceof Cidade) {
        Cidade municipio = (Cidade) value;
        return String.valueOf(municipio.getCid_id());
    }
    return "";
}

}[/code]

[code]entidade estado.java:

public class Estado implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = “est_id”)
private Long est_id;
@Column(name = “est_nome”, nullable=false)
private String est_nome;
@Column(name = “est_sigla”, unique=true, nullable=false)
private String est_sigla;

public long getEst_id() {
    return est_id;
}

public void setEst_id(long est_id) {
    this.est_id = est_id;
}[/code]

[code]comboBean.java:

@ManagedBean
@ViewScoped
public class ComboBean implements Serializable {

private final EstadoDao estDao = new EstadoDao();
private final CidadeDao cidDao = new CidadeDao();
private List<Estado> estados;
private List<Cidade> cidades;
private Cidade cidade;
private Estado estado;

public ComboBean() {
    
}

@PostConstruct
public void init() {
    estados = estDao.listarTodos();
    if(cidade == null){
        cidade = new Cidade();
    }
    if(estado == null){
        estado = new Estado();
    }
}

public void listaCidades(AjaxBehaviorEvent event) {
    cidades = cidDao.listarTodos(estado);
}

public Cidade getCidade() {
    return cidade;
}

public void setCidade(Cidade cidade) {
    this.cidade = cidade;
}

public List<Cidade> getCidades() {
    return cidades;
}

public void setCidades(List<Cidade> cidades) {
    this.cidades = cidades;
}

public Estado getEstado() {
    return estado;
}

public void setEstado(Estado estado) {
    this.estado = estado;
}

public List<Estado> getEstados() {
    return estados;
}

public void setEstados(List<Estado> estados) {
    this.estados = estados;
}

}[/code]

[code]Erro:

SEVERE: Error Rendering View[/vendas/clientes.xhtml]
java.lang.NullPointerException
at br.com.zanzini.entity.Estado.getEst_id(Estado.java:33)
at br.com.zanzini.converter.ConverterEstado.getAsString(ConverterEstado.java:35)
at org.primefaces.util.ComponentUtils.getValueToRender(ComponentUtils.java:68)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeLabel(SelectOneMenuRenderer.java:120)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeMarkup(SelectOneMenuRenderer.java:89)
at org.primefaces.component.selectonemenu.SelectOneMenuRenderer.encodeEnd(SelectOneMenuRenderer.java:62)
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 org.primefaces.component.panelgrid.PanelGridRenderer.encodeRow(PanelGridRenderer.java:137)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeStaticBody(PanelGridRenderer.java:107)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeBody(PanelGridRenderer.java:63)
at org.primefaces.component.panelgrid.PanelGridRenderer.encodeEnd(PanelGridRenderer.java:49)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:59)
at org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:43)
at org.primefaces.component.panel.PanelRenderer.encodeContent(PanelRenderer.java:198)
at org.primefaces.component.panel.PanelRenderer.encodeMarkup(PanelRenderer.java:115)
at org.primefaces.component.panel.PanelRenderer.encodeEnd(PanelRenderer.java:55)
at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764)
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:402)
at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
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.StandardWrapper.service(StandardWrapper.java:1550)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281)
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:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
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:722)[/code]

Linha 33 do Estado.java:

Linha 35 do converterEstado.java:

Desculpe o post super grande, eu quis detalhar bem o que está ocorrendo…
Sou novo em Java Web.

Obrigado desde já!

Abraço!

Opa, beleza?

Seu nullpointer está aqui:
br.com.zanzini.entity.Estado.getEst_id(Estado.java:33)

O que tem nessa linha?

Eu prometo para você que a linha 33 da sua entidade estado não é return est_id;

Não via dar null pointer nesse comando.

Caso realmente seja essa a linha, você pode estar rodando um código antigo no servidor. Limpe os arquivos temporários e execute novamente.

[quote=Hebert Coelho]Opa, beleza?

Seu nullpointer está aqui:
br.com.zanzini.entity.Estado.getEst_id(Estado.java:33)

O que tem nessa linha?[/quote]

Eu citei ali no poste, é o arquivo Estado.java, a linha é

O arquivo inteiro:

[code]@Entity
@Table(name = “Estado”)
public class Estado implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = “est_id”)
private Long est_id;
@Column(name = “est_nome”, nullable=false)
private String est_nome;
@Column(name = “est_sigla”, unique=true, nullable=false)
private String est_sigla;

public long getEst_id() {
    return est_id;
}

public void setEst_id(long est_id) {
    this.est_id = est_id;
}

public String getEst_nome() {
    return est_nome;
}

public void setEst_nome(String est_nome) {
    this.est_nome = est_nome;
}

public String getEst_sigla(){
    return est_sigla;
}
public void setEst_sigla(String est_sigla){
    this.est_sigla = est_sigla;
}

@Override
public boolean equals(Object obj) {
    if (obj == null) {
        return false;
    }
    if (getClass() != obj.getClass()) {
        return false;
    }
    final Estado other = (Estado) obj;
    if (this.est_id != other.est_id && (this.est_id == null || !this.est_id.equals(other.est_id))) {
        return false;
    }
    return true;
}

@Override
public int hashCode() {
    int hash = 5;
    hash = 41 * hash + (this.est_id != null ? this.est_id.hashCode() : 0);
    return hash;
}[/code]

[quote=Hebert Coelho]Eu prometo para você que a linha 33 da sua entidade estado não é return est_id;

Não via dar null pointer nesse comando.

Caso realmente seja essa a linha, você pode estar rodando um código antigo no servidor. Limpe os arquivos temporários e execute novamente.[/quote]

Voce diz isso por ser um long, correto?

Veja que em vez de long eu coloquei Long, porque? Pra verificar se é null no hashcode, que é a linha:

[quote=faelzindc]Voce diz isso por ser um long, correto?

Veja que em vez de long eu coloquei Long, porque? Pra verificar se é null no hashcode, que é a linha:

hash = 41 * hash + (this.est_id != null ? this.est_id.hashCode() : 0);[/quote]E aí? continuou o problema? O.o

Se você deixa long, não vai precisar fazer o if. Caso não exista valor o default é 0.

[quote=Hebert Coelho][quote=faelzindc]Voce diz isso por ser um long, correto?

Veja que em vez de long eu coloquei Long, porque? Pra verificar se é null no hashcode, que é a linha:

hash = 41 * hash + (this.est_id != null ? this.est_id.hashCode() : 0);[/quote]E aí? continuou o problema? O.o

Se você deixa long, não vai precisar fazer o if. Caso não exista valor o default é 0. [/quote]

Não consegui, eu preciso deixar como Long, por causa que ele da erro no comboBox que eu fiz se eu tirar.
Olha o tutorial que eu segui pra fazer o combo box:

Edit: ai no tutorial mostra o erro que da se eu tirar o hashcode

Mas eu não falei para retirar o hash, apenas deixar como long.

hash = 41 * hash + est_id;

sendo que est_id seria long e não Long

[quote=Hebert Coelho]Mas eu não falei para retirar o hash, apenas deixar como long.

hash = 41 * hash + est_id;

sendo que est_id seria long e não Long[/quote]

Obrigado Hebert, estou quase lá!

O erro sumiu, agora o ManagedProperty não está funcionando, eu coloquei no meu ManagedBean que está sendo executado ao clicar no submit:

@ManagedProperty(value="#{comboBean.estado}") private Estado estado; @ManagedProperty(value="#{comboBean.cidade}") private Cidade cidade;
Certo?

Ai no método que é executado, eu coloquei pra testar:

Ele só retorna NULL, o que pode ser?

Não sei.

Veja se você fez o mesmo que é feito nesse post: Aplicação Web Completa Tomcat JSF Primefaces JPA Hibernate

[quote=Hebert Coelho]Não sei.

Veja se você fez o mesmo que é feito nesse post: Aplicação Web Completa Tomcat JSF Primefaces JPA Hibernate[/quote]

Obrigado amigo!
Eu estava fazendo de forma errada, eu nao estava colocando o ManagedProperty em uma classe, daí não conseguia fazer o que queria!
Assim que eu vou aprendendo hehehe…
Muito obrigado mesmo!