Erro ao criar um Converter

Boa noite, pessoal estou com muita dificuldade em implementar um Converter, sei que existe vários post sobre o assunto
mas tudo que era possível fazer com ajuda dos mesmos foi em vão. Pesso a ajuda de vocês, pois já não sei onde mas procurar respostas.

Vamos lá.

Criei um <p:selectOneMenu> e estou populando normalmente com os meus objetos oriundos de um BD. Até ai tudo bem, quando ia salvar
o formulário aparecia o famoso erro “null converter”, então crei a classe EmpresaConverter (os dados a serem salvos requer um objeto do tipo Empresa).
Mas com tudo isso esta gerando um novo erro. Olha ele ai:

GRAVE: Error Rendering View[/admin/cadastroLinhas.xhtml] java.lang.NullPointerException at br.com.omissoesWeb.converter.EmpresaConverter.getAsString(EmpresaConverter.java:40) at org.primefaces.util.ComponentUtils.getValueToRender(ComponentUtils.java:74) 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:1786)......
e por ai vai…

Meu Converter (EmpresaConverter)

package br.com.omissoesWeb.converter;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.ConverterException;
import javax.faces.convert.FacesConverter;
import org.springframework.stereotype.Component;
import br.com.omissoesWeb.empresa.Empresa;
import br.com.omissoesWeb.empresa.EmpresaRN;

@Component(value = "empresaConverter")
@FacesConverter(forClass = Empresa.class)
public class EmpresaConverter implements Converter {

	@Override
	public Object getAsObject(FacesContext context, UIComponent component,
			String value) {
		if (value != null && value.trim().length() > 0) {
			Integer codigo = Integer.valueOf(value);
			try {
				EmpresaRN empresaRN = new EmpresaRN();
				return empresaRN.carregar(codigo);
			} catch (Exception e) {
				throw new ConverterException(
						"Não foi possivel encontrar a empresa de código"
								+ value + "." + e.getMessage());
			}
		}
		return null;
	}
	@Override
	public String getAsString(FacesContext context, UIComponent component,
			Object value) {
		if (value != null) {
			Empresa empresa = (Empresa) value;
			return empresa.getId_empresa().toString();
		}
		return null;
	}
}

Componente <p:selectOneMenu>

<h:outputLabel value="Empresa" />
				<p:selectOneMenu value="#{linhaBean.linha.empresa}" converter="#{empresaConverter}">
					<f:selectItems value="#{empresaBean.lista}" var="empresa"
						itemLabel="#{empresa.nome_empresa}" itemValue="#{empresa}" />
				</p:selectOneMenu>

Metodo da classe EmpresaRN e EmpresaDAOHibernate para a busca do objeto.

public Empresa carregar(Integer empresa){
		return this.empresaDAO.carregar(empresa);
	}
*/ implementa a EmpresaDAO */

public Empresa carregar(Integer codigo) {
		return (Empresa) this.session.get(Empresa.class, codigo);
	}

Espero que me ajudem…

Obrigaduuuu…

e aí, cara, tudo bem?
Qual é a sua dificuldade, exatamente?

Bom dia smnj, a dificuldade e este erro ai, pois não deixa eu salvar o objeto no BD, creio que não seja muito dificil a solução,mas não estou entendendo, o que pode ser ???

Obrigaduuuuu pela atenção…

GRAVE: Error Rendering View[/admin/cadastroLinhas.xhtml]
java.lang.NullPointerException
at br.com.omissoesWeb.converter.EmpresaConverter.getAsString(EmpresaConverter.java:40)

e ae eduardimaa
blz?

Já passei por isso e a solucao que tive seria implementar na classe empresa o hashcode e equals como exemplo o link: http://www.guj.com.br/java/257236-jsf-20—como-pegar-objeto-inteiro-no-selectonemenu

Ou vc poderia implementar de outra forma para persistir os dados do formulario, exemplo:

&lt;h:outputLabel value="Empresa" /&gt;
				&lt;p:selectOneMenu value="#{empresaBean.idEmpresa}"&gt;
					&lt;f:selectItems value="#{empresaBean.lista}" var="empresa"
						itemLabel="#{empresa.nome_empresa}" itemValue="#{empresa.id}" /&gt;
				&lt;/p:selectOneMenu&gt;

No ManagedBean vc teria um atributo Long idEmpresa (getter/setter) e na hora da ação de gravar, você buscaria o objeto pelo idEmpresa e conseguiria persistir.

Espero ter ajudado.
[]s

Talvez a view não esteja gostando de receber um null como retorno, não sei como está feito.

Se preferir pode retornar uma String vazia caso o argumento value do método getAsString esteja nulo.

Ola galera, muito obrigado a todos que me ajudaram, mas com o Converter não consegui resolver,
então segui a dica do DiiH, e estou conseguindo persistir os dados.
Em um futuro não distante ( kkk ) retornarei com o Converter.

Muito obrigado mesmo, abraçuuuuuuuu

experimente, só por questão de boa prática, dar uma olhada na documentação do primefaces.

talvez tenha tido problemas com criar o selectONe:

tente:
<h:selectOneMenu id=“identificador” value="{#nomeDoSeuBean.objeto.atributo}">
<f:selectItems value="{#nomeDoSeuBean.atributoSelecionado}/>
</selectOneMenu>">

Ok …abraçuu