2
respostas

Problemas com SelectOneMenu Primefaces - converter

Boa tarde galera, já tem uma semana que estou enrolado com um SelectOneMenu com primefaces. Não consigo resolver a parte do converter. Já tentei utilizar OmniFaces mas também não deu certo. Alguém pode me ajudar?????

<p:selectOneMenu id="stlocal" converter="testeconverter" filter="true" value="#{statusLocalController.statuslocal}">
    <f:ajax event="change" listener="#{statusLocalController.teste()}"/>
    <f:selectItem noSelectionOption="true">selecione um status</f:selectItem>
    <f:selectItems value="#{statusLocalController.liststatuslocal}" var="liststatus" itemValue="#{liststatus}" itemLabel="#{liststatus.nome}" />
</p:selectOneMenu>

Converter

@FacesConverter(value = "testeconverter")
public class StausConverter  implements Converter{

    @Override
    public Object getAsObject(FacesContext arg0, UIComponent arg1, String arg2) {
        Object ret = null;      
        if (arg1 instanceof SelectOneMenu) {

            Object selectmenu = ((SelectOneMenu) arg1).getAttributes();
                String id = "" + ((StatusLocal) selectmenu).getId();

                System.out.println("ID: "+id);

                if (arg2.equals(id)) {

                    ret = selectmenu;

                    System.out.println("RET "+ret);
               }       
        } 
        return ret;
    }

    @Override
    public String getAsString(FacesContext arg0, UIComponent arg1, Object arg2) {
        String str = "";
        if (arg2 instanceof StatusLocal) {
            str = "" + ((StatusLocal) arg2).getId();
        }
        return str;
    }
}
2 respostas

Oi Cleiton,

O que está acontecendo? Dá algum erro?

Abraço!

Fala Cleiton. Tu fez o Override do método equals(), toString(), e hashCode() na tua classe Modelo que vais exibir no h:selectOneMenu?

Na minha classe EMPRESA, fiz da seguinte forma:

@Entity
public class Empresa implements Serializable {
// Outros atributos e métodos
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        if (!(object instanceof Empresa)) {
            return false;
        }
        Empresa other = (Empresa) object;
        if ((this.id == null && other.id != null)
                || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "br.adv.martinelli.Comprov.modelo.Empresa[id=" + id + ]";
    }
}