Nullpoint sem explicação JSF2.0

seguinte, estava fazendo minha aplicação normalmente, ao terminar de conseguir efetuar o adicionar fui efetuar os outros procedimentos do crud, porem agora ao terminar todos os procedimentos de ajax e tudo mais, todo o formulario está ok, porem quando estou salvando agora está informando que o objeto orgao está vindo null. o que está me encabulando é que eu tou debugando e quando verifico esse outro objeto orgaoSelected nao está vindo null, esse new Orgao(); ja serve pra isso, evitar dele vim null, não sei mais aonde recorrer, no salvar ja troquei action por actionListener e tudo, o mais engraçado é que ontem estava funcionando normalmente e do nada aconteceu isso. o pior é que nem mechi no metodo e no bean. está exatamente igual, era pra no minimo ele nao vir null.

xhtml do dialog.

<?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:h="http://java.sun.com/jsf/html"
	xmlns:f="http://java.sun.com/jsf/core"
	xmlns:ui="http://java.sun.com/jsf/facelets"
	xmlns:p="http://primefaces.org/ui">
	
<f:view contentType="text/html">	
<h:body>
	<p:dialog id="MyDialog" resizable="false" widgetVar="dialog" modal="true" appendToBody="true" header="Informações do Orgão" 
		dynamic="true" draggable="false" > 
			<h:form id="addOrgao">
					<p:growl id="notify" showDetail="true" sticky="true"/>	
					<h:inputHidden value="#{orgBean.orgao.codigo}" />
<!-- 				<fieldset><legend>Informações do Orgão</legend> -->
					<h:panelGrid columns="1">
						<h:outputLabel value="*Nome:"/>
						<h:inputText value="#{orgBean.orgao.nome}" size="100" required="true" requiredMessage="Nome Obrigatorio"
						validatorMessage="Nome deve conter no minimo '10' caracteres."> 
							<f:validateLength minimum="10" />
						</h:inputText>
					</h:panelGrid>
					
					<h:panelGrid columns="4">
						<h:panelGrid columns="1">
							<h:outputLabel value="Tipo do Orgão:"/>
							<h:selectOneMenu id="tipoOrgao" value="#{orgBean.orgao.tipo}" converter="tipoOrgaoConverter" style="width: 140px;" >
								<f:selectItem itemLabel="Selecione" />
								<f:selectItems var="tipoOrgao" value="#{orgBean.listarTipoOrgao}" itemLabel="#{tipoOrgao.descricao}" itemValue="#{tipoOrgao}" />							
							</h:selectOneMenu>
						</h:panelGrid>
												
						<h:panelGrid columns="1">
							<h:outputLabel value="*CNPJ:"/>
							<p:inputMask id="cnpj" value="#{orgBean.orgao.cnpj}" mask="99.999.999/9999-99" size="25" />
						</h:panelGrid>
						
						<h:panelGrid columns="1">
							<h:outputLabel value="*Codigo Sagres:"/>
							<p:inputText value="#{orgBean.orgao.codigoSagres}" size="25" />
						</h:panelGrid>
						
				
						<h:panelGrid columns="1">
							<h:outputLabel value="Decreto:"/>
							<p:inputText value="#{orgBean.orgao.decreto}" cols="40" rows="5" />
						</h:panelGrid>	
					</h:panelGrid>
					
					
<!-- 					A partir daqui é o endereço		-->
					
					<h:panelGrid columns="3">
						<h:panelGrid columns="1">
							<h:outputLabel value="*Endereço:"/>
							<p:inputText value="#{orgBean.orgao.endereco.logradouro}" size="50" />
						</h:panelGrid>
						
						<h:panelGrid columns="1">
							<h:outputLabel value="*Bairro:"/>
							<p:inputText value="#{orgBean.orgao.endereco.bairro}" size="30" />
						</h:panelGrid>
						
						<h:panelGrid columns="1">
							<h:outputLabel value="*Numero:"/>
							<p:inputText value="#{orgBean.orgao.endereco.numero}" size="5" />
						</h:panelGrid>
				
					</h:panelGrid>
					
					<h:panelGrid columns="4">
					
						<h:panelGrid columns="1">
							<h:outputLabel value="Complemento:"/>
							<p:inputText value="#{orgBean.orgao.endereco.complemento}" size="30" />
						</h:panelGrid>
						
						<h:panelGrid columns="1">
							<h:outputLabel value="*CEP:"/>
							<p:inputText value="#{orgBean.orgao.endereco.cep}" size="30" />
						</h:panelGrid>
						
						<h:panelGrid columns="1">
							<h:outputLabel value="*UF:"/>
						<h:selectOneMenu id="estado" value="#{orgBean.orgao.endereco.cidade.estado}"
							converter="estadoConverter">
							<f:selectItems value="#{orgBean.selecionarEstado}" />
							<p:ajax update="cidade" listener="#{orgBean.carregarCidades}" />
						</h:selectOneMenu>
					</h:panelGrid>
					
						<h:panelGrid columns="1">
							<h:outputLabel value="*Cidade:"/>
							<h:selectOneMenu id="cidade" value="#{orgBean.orgao.endereco.cidade}" converter="cidadeConverter">
								<f:selectItem itemLabel="Selecione a cidade"/>
								<f:selectItems value="#{orgBean.selecionarCidade}" var="cidade" itemLabel="#{cidade.nome}" itemValue="#{cidade}" />														
							</h:selectOneMenu>
						</h:panelGrid>
						
					</h:panelGrid>					
<!-- 					Aqui se encontra o Contato -->

					<h:panelGrid columns="3">
						<h:panelGrid columns="1">
							<h:outputLabel value="*Telefone:"/>
							<p:inputText value="#{orgBean.orgao.contato.telefone}" size="20" />
						</h:panelGrid>
						
						<h:panelGrid columns="1">
							<h:outputLabel value="Fax:"/>
							<p:inputText value="#{orgBean.orgao.contato.fax}" size="20" />
						</h:panelGrid>
						<h:panelGrid columns="1">
							<h:outputLabel value="E-Mail:"/>
							<p:inputText value="#{orgBean.orgao.contato.email}" size="40" />
						</h:panelGrid>
						
					</h:panelGrid>	
					
					<p:dataTable id="listaOrgao" rows="7" style="margin-top: 10px;" value="#{orgBean.lista}" var="orgao"
					 emptyMessage="Não possui Orgãos" rowKey="#{orgao.codigo}" selection="#{orgBean.orgao}" selectionMode="single">
						<f:facet name="header">Orgãos Cadastrados</f:facet>
						
						<p:ajax event="rowSelect" update=":addOrgao" />
						
						<p:column headerText="Orgãos">
							#{orgao.nome}
						</p:column>
						
					</p:dataTable>
					
					<p:separator/>
					
					<p:commandButton value="Salvar" action="#{orgBean.salvar}"/>
									
<!-- 				</fieldset> -->
			</h:form>
			
		</p:dialog>

</h:body>
</f:view>
</html>

xhtml do meu bean.

package br.com.idea.dilicita.beans;

import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.model.SelectItem;

import org.primefaces.event.SelectEvent;

import br.com.idea.dilicita.exception.DilicitaException;
import br.com.idea.dilicita.facade.DilicitaFacade;
import br.com.idea.dilicita.model.Cidade;
import br.com.idea.dilicita.model.Estado;
import br.com.idea.dilicita.model.Orgao;
import br.com.idea.dilicita.model.TipoOrgao;

@ManagedBean(name="orgBean")
@ViewScoped
public class OrgBean {

	private Orgao orgao = new Orgao();
	private Estado estado = new Estado();
	private List<Orgao> lista;
	private List<TipoOrgao> listarTipoOrgao = null;
	private List<Estado> selecionarEstado;
	private List<Cidade> selecionarCidade;
	private Orgao orgaoSelected = new Orgao();

	public void salvar() {
		try {
			DilicitaFacade orgaoRN = new DilicitaFacade();
			orgaoRN.salvarOrgao(orgao);
		} catch (DilicitaException e) {
			e.printStackTrace();
		}
	}

	public void excluir() {
		try {
			DilicitaFacade orgaoRN = new DilicitaFacade();
			orgaoRN.excluirOrgao(orgao);
			this.lista = null;
		} catch (DilicitaException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public List<Orgao> getLista() {
		try {
			DilicitaFacade orgaoRN = new DilicitaFacade();
			this.lista = orgaoRN.listarOrgaos();
		} catch (DilicitaException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		return lista;
	}

	public Orgao getOrgao() {
		return this.orgao;
	}

	public void setOrgao(Orgao orgao) {
		this.orgao = orgao;
	}

	public List<TipoOrgao> getListarTipoOrgao() {
		if(listarTipoOrgao == null) {
			try {
				DilicitaFacade orgaoRN = new DilicitaFacade();
				this.listarTipoOrgao = orgaoRN.listarTiposOrgaos();
			} catch (DilicitaException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return listarTipoOrgao;
	}

	public List<SelectItem> getSelecionarEstado() {
		DilicitaFacade orgaoRN = new DilicitaFacade();
		List<SelectItem> itens = new ArrayList<SelectItem>();
		itens.add(new SelectItem(null, "Selecione o estado"));
		try {
			for (Estado est : orgaoRN.listarEstados()) {
				SelectItem se = new SelectItem();
				se.setValue(est);
				se.setLabel(est.getUF());
				itens.add(se);
			}
		} catch (DilicitaException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return itens;
	}

	public List<Cidade> getSelecionarCidade() {
		return this.selecionarCidade;			
	}

	public void carregarCidades() {
		DilicitaFacade orgaoRN = new DilicitaFacade();
		Long n = this.orgao.getEndereco().getCidade().getEstado().getCodigo();
		int idEstado = Integer.valueOf(n.toString());
		try {	    		
			this.selecionarCidade = orgaoRN.listarCidades(idEstado);
		} catch (DilicitaException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}      
	}
	
	public void clean() {
		this.orgao = new Orgao();
	}

	public Estado getEstado() {
		return estado;
	}

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

	public Orgao getOrgaoSelected() {
		return orgaoSelected;
	}

	public void setOrgaoSelected(Orgao orgaoSelected) {
		this.orgaoSelected = orgaoSelected;
	}

}

Coloque um breakpoint em

public void setOrgao(Orgao orgao) { this.orgao = orgao; }

E verá que existe uma chamada a ele passando o valor null. Você pode até usar um breakpoint condicional, assim não ficará maluco mandando o debug prosseguir quando o parâmetro não for nulo.

O fato de você inicializar uma variável não significa que ela nunca será nula pois você está usando o operador “=” no método modificador (setOrgao). Se no método modificador você passar o valor null a variável passará a ter o valor null.

Você me indicaria fazer alguma modificação nesse set?

pode ocorrer de algum objeto que nao seja Orgao, tornar o objeto Orgao nulo?

ah, outra coisa, farei o seguinte

public void setOrgao(Orgao orgao) { 
   if(orgao != null) {
        this.orgao = orgao;
    }
    
    } 

o que está me encabulando é que primeiro, se eu instaciar: Orgao orgao; ele dava error na pagina pq os atributos estao nulos, porem nao estao dando mais nem eu colocando da duas formas:

Orgao orgao;
Orgao orgao = = new Orgao();

a partir dai já me encabulei, no inicio estava dando, agora não mais. mais vou testar o que você me indicou e fazer o debug.

Instancie os objetos em um método marcado com @PostConstruct

poderia me dar um exemplo? ainda estou aprendendo.

public class OrgBean {  
 
    private Orgao orgao;  
  
   @PostConstruct
   private void init(){
       orgao = new Orgao();
   } 

   public void salvar() {  
   }
}

erick poderia me explicar, o que esse @PostConstruct ele faz?

Serve para garantir que o método será quando o container for iniciado. Depois que é chamado, você vai poder utilizar as depedencias.
Procurando no google você acha mais informações ( e uma explicação melhor).