E aí galera.
Estou quebrando a cabeça há alguns dias e não consigo resolver esse problema. O pior de tudo é que não tem como rastrear o erro. Na minha pagina eu tenho 4 selectOneMenu o primeiro tah de boa, eu selecione ele, aí ele filtra o segundo, mas quando eu seleciono o segundo dá um erro, tipo de um erro de conversor, nos logs do glassfish não aparece nada, só aquele popup do jsf
<h:outputLabel value="Empresa"/>
<p:selectOneMenu value="#{rContaFluxoMb.model.empr}" valueChangeListener="#{versaoContabMb.seleciona}" onchange="submit()" immediate="true">
<!-- <p:ajax event="change" update="versao"/>-->
<f:selectItems value="#{emprUsuMb.selectItem}" var="item" itemValue="#{item.value}" itemLabel="#{item.label}"/>
</p:selectOneMenu>
<h:outputLabel value="Versão Contabil"/>
<p:selectOneMenu value="#{rContaFluxoMb.model.versaocontab}" id="versao" valueChangeListener="#{contaFluxoMb.seleciona}" onchange="submit()" immediate="true" >
<!-- <p:ajax event="change" update="conta"/>-->
<f:selectItems value="#{versaoContabMb.listaEmpr}" var="item" itemValue="#{item.value}" itemLabel="#{item.label}"/>
</p:selectOneMenu>
<h:outputLabel value="Conta do Fluxo"/>
<p:selectOneMenu value="#{rContaFluxoMb.model.contafluxo}" id="conta" immediate="true">
<f:selectItems value="#{contaFluxoMb.listaVersao}" var="item" itemValue="#{item.value}" itemLabel="#{item.label}"/>
</p:selectOneMenu>
<h:outputLabel value="Natureza"/>
<p:selectOneMenu value="#{rContaFluxoMb.model.natureza}" id="natureza">
<f:selectItems value="#{naturezaOpFiscalMb.selectItem}" var="item" itemValue="#{item.value}" itemLabel="#{item.value}"/>
</p:selectOneMenu>
<h:commandButton actionListener="#{rContaFluxoMb.gravar()}" value="Gravar" update="growl,tabela"/>
Esse é a parte do meu codigo que gera as listas dos selectItems:
Esse é do primeiro selectOneMenu:
@ManagedBean
@SessionScoped
public class EmprUsuMb implements Serializable{
@EJB
private EmprUsuFacade dao;
private EmprUsu model = new EmprUsu();
public List<SelectItem> getSelectItem() {
List<SelectItem> listaItem = new ArrayList<SelectItem>();
List<EmprUsu> lista = dao.findAll();
listaItem.add(new SelectItem(null, ""));
for (EmprUsu c : lista) {
listaItem.add(new SelectItem(c, c.toString()));
}
return listaItem;
}
@FacesConverter(forClass = EmprUsu.class)
public static class ConverterEmprUsu implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
if (value.isEmpty() || value != null) {
EmprUsuMb emprUsu = (EmprUsuMb)context.getApplication().getELResolver().getValue(context.getELContext(), null, "emprUsuMb");
return emprUsu.dao.find(Long.parseLong(value));
}
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException {
if (value != null && value instanceof EmprUsu) {
return ((EmprUsu) value).getEmprusuId().toString();
}
return null;
}
}
}
Esse do segundo onde está dando o erro:
@ManagedBean
@SessionScoped
public class VersaoContabMb implements Serializable {
@EJB
private VersaoContabFacade dao;
private VersaoContab model = new VersaoContab();
private EmprUsu idEmpresa;
/** Creates a new instance of VersaoContabMb */
public VersaoContabMb() {
}
public List<SelectItem> getLista(){
List<SelectItem> listaItem = new ArrayList<SelectItem>();
List<VersaoContab> lista = dao.findAll();
listaItem.add(new SelectItem(null, "Selecione"));
for (VersaoContab c : lista) {
listaItem.add(new SelectItem(c, c.toString()));
}
return listaItem;
}
/**
* @return the model
*/
public VersaoContab getModel() {
return model;
}
/**
* @param model the model to set
*/
public void setModel(VersaoContab model) {
this.model = model;
}
public List<SelectItem> getListaEmpr(){
List<SelectItem> listaItem = new ArrayList<SelectItem>();
List<VersaoContab> lista = dao.listaByEmpr(getIdEmpresa());
// listaItem.add(new SelectItem(null, "Selecione"));
for (VersaoContab c : lista) {
listaItem.add(new SelectItem(c, c.toString()));
}
return listaItem;
}
/**
* @return the idEmpresa
*/
public EmprUsu getIdEmpresa() {
return idEmpresa;
}
/**
* @param idEmpresa the idEmpresa to set
*/
public void setIdEmpresa(EmprUsu idEmpresa) {
this.idEmpresa = idEmpresa;
}
public void seleciona(ValueChangeEvent event){
if(event.getNewValue() != null){
System.out.println(event);
idEmpresa = (EmprUsu) event.getNewValue();
System.out.println(idEmpresa);
//FacesContext.getCurrentInstance().renderResponse();
}
}
@FacesConverter(forClass = VersaoContab.class)
public static class ConverterEmprUsu implements Converter {
@Override
public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
if (value.isEmpty() || value != null) {
VersaoContabMb versaoContab = (VersaoContabMb)context.getApplication().getELResolver().getValue(context.getELContext(), null, "versaoContabMb");
return versaoContab.dao.find(Long.parseLong(value));
}
return null;
}
@Override
public String getAsString(FacesContext context, UIComponent component, Object value) throws ConverterException {
if (value != null && value instanceof VersaoContab) {
return ((VersaoContab) value).getVerscontabId().toString();
}
return null;
}
}
}
Interessante que os conversores são iguais, os metodos que geram os selectItems são iguais, mas dá o erro que eu postei aí

