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…