SelectoneMenu -> Converter "Erro de conversão ao definir valor ... para null converter

0 respostas
kiwoxox

Boa noite estou com esse problema de conversão... tentei fazer de duas maneiras... vou enviar parte do meu código. As duas maneiras são realizadas no conversor e mesmo assim persiste o problema o .xhtml é unico segue abaixo o código.

cadastrodispositivo.xhtml
<h:form id="frm_dispositivo_menu">   
                     <p:growl id="msg" life="30000"/>
                    <p:dialog id="dialogdispositivo" header="Detalhes Dispositivo" widgetVar="menuDispositivo" modal="true">
                        <h:inputHidden value="#{dispositivoBean.dispositivo.id}"/>
                            <h:panelGrid columns="2">
                                <p:outputLabel value="Serial:"/>
                                <p:inputText value="#{dispositivoBean.dispositivo.serial}"/>
                                <p:outputLabel value="Descrição:"/>
                                <p:inputText value="#{dispositivoBean.dispositivo.descricao}"/>
                                
                                <p:outputLabel value="Zigbee:"/>
                                <p:selectOneMenu value="#{dispositivoBean.dispositivo.ZIGBEEid}">
                                    <f:selectItems value="#{dispositivoBean.zigbeeSelect}"/>
                                </p:selectOneMenu>
                                
                                <p:outputLabel value="Setor:"/>
                                <p:selectOneMenu value="#{dispositivoBean.dispositivo.SETORid}"  >
                                    <!--<f:converter converterId="setorConverter"/>-->
                                    
                                    <f:selectItem itemLabel="Selecione"/>
                                    <f:selectItems value="#{dispositivoBean.listaSetor}" var="set" itemValue="#{set}" itemLabel="#{set.nome}"/>
                                </p:selectOneMenu>
                                
                                <p:outputLabel value="Status:"/>
                                <p:selectOneMenu value="#{dispositivoBean.dispositivo.status}">
                                    <f:selectItem itemLabel="Selecione" itemValue=""/>
                                    <f:selectItem itemLabel="Ativo" itemValue="Ativo"/>
                                    <f:selectItem itemLabel="Inativo" itemValue="Inativo"/>
                                    <f:selectItem itemLabel="Desativado" itemValue="Desativado"/>
                                </p:selectOneMenu>
                                <f:facet name="footer">
                                <p:separator/>
                                <p:commandButton value="Salvar" action="#{dispositivoBean.salvarDisp}"  onclick="menuDispositivo.hide()" update=":frm_dispositivo_lista:dtdispositivo,msg"/>
                                <p:commandButton value="Deletar" action="#{dispositivoBean.excluirDispositivo}" onclick="menuDispositivo.hide()" update=":frm_dispositivo_lista:dtdispositivo"/>     
                                </f:facet>
                      </h:panelGrid>
                    </p:dialog>
                </h:form>
Converter do Zigbee DispositivoBean
@ManagedBean
@RequestScoped
public class DispositivoBean {
    private Dispositivo dispositivo = new Dispositivo();
    private Zigbee zigbee = new Zigbee();
    private List<Dispositivo> listaDispositivo;
    private List<Dispositivo> ListaDispositivoFiltro;
    private List<SelectItem> zigbeeSelect;
    private List<Setor> listaSetor;
    private SelectItem[] opcaoStatus;

    public DispositivoBean() {
        listaDispositivo = ListaDispositivoFiltro = listarDispositivo();
    }

....[gets sets]....   
    
        
    private SelectItem[] criaFiltroStatus(){
        SelectItem[] opcao = new SelectItem[4];
        opcao[0] = new SelectItem("","Selecione");
        opcao[1] = new SelectItem("Ativo","Ativo");
        opcao[2] = new SelectItem("Inativo","Inativo");
        opcao[3] = new SelectItem("Desativado", "Desativado");
        return opcao;
    }
    
    private List<Dispositivo> listarDispositivo(){
        return DAOFactory.createDispositivoDAO().listar();
    }
    
    public String salvarDisp(){
        System.out.println("Passei teste");
        DispositivoDAO disdao = DAOFactory.createDispositivoDAO();
        Zigbee teste = new Zigbee();
        teste = dispositivo.getZIGBEEid();;
        System.out.println("Dispositivo "+ teste.getEndereco());
//        if (dispositivo.getId() == null)
//        {
//            dispositivo.getSETORid().setStatus("Ativo");
//            disdao.salvar(dispositivo);
//        }
//        else
//            disdao.atualizar(dispositivo);
        listaDispositivo = ListaDispositivoFiltro = listarDispositivo();
        return null;
    }
    
    public String excluirDispositivo(){
        DispositivoDAO disdao = DAOFactory.createDispositivoDAO();
        disdao.excluir(dispositivo);
        listaDispositivo = ListaDispositivoFiltro = listarDispositivo();
        return null;
    }
    
    public void novoDispositivo(){
        dispositivo = new Dispositivo();
    }
    
    @PostConstruct
    public void carregaFiltro(){
        opcaoStatus = criaFiltroStatus();
    }
    
    public List<SelectItem> getZigbeeSelect(){
        this.zigbeeSelect = new ArrayList<SelectItem>();
        this.montaDadosSelect(this.zigbeeSelect,DAOFactory.createZigbeeDAO().listarInativos(),"");
        return zigbeeSelect;
    }
    
    public void montaDadosSelect(List<SelectItem> select, List<Zigbee> zigbees,String prefixo){
        SelectItem item = null;
        if(zigbees != null){
            for(Zigbee zb : zigbees ){
                item = new SelectItem(zb, prefixo+ zb.getMac());
                item.setEscape(false);
                select.add(item);
            }
        }
    }
    
    @PostConstruct
    public void carregaListas(){
    //    listaZigbee = DAOFactory.createZigbeeDAO().listarInativos();
        listaSetor = DAOFactory.createSetorDAO().listar();
    }
    
    
}
ZigbeeConverter
@FacesConverter(forClass = Zigbee.class)
public class ZigbeeConverter implements Converter{
    
    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value){
        if(value != null && value.trim().length()>0){
            Integer id = Integer.valueOf(value);
            try{
                ZigbeeDAO dao = new ZigbeeDAO();
                return dao.carregar(id);
            } catch(Exception e) {
                throw new ConverterException("Não foi possivel encontrar o Zigbee de código:" + value + "." + e.getMessage());
            }
        }
        return null;
    }
    
    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value){
        if (value != null){
            Zigbee zigbee = (Zigbee) value;
            return zigbee.getId().toString();
        }
        return "";
    }
    
}
2º Maneira Setor SetorConverter
@FacesConverter(value = "setorConverter")
public class SetorConverter implements Converter{
    
    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value){
        if(value != null && !value.equals("")){
            SetorDAO dao = new SetorDAO();
            return dao.carregar(Integer.valueOf(value));
        }
        return null;
    }
    
    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value){
        if (value instanceof Setor){
            Setor setor = (Setor) value;
            return String.valueOf(setor.getId());
        }
        return "";
    }
    
}
Criado 25 de maio de 2013
Respostas 0
Participantes 1