Jsf com primefaces, problema com converter

meu xtml

<?xml version='1.0' encoding='UTF-8' ?>  
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">  
<html xmlns="http://www.w3.org/1999/xhtml"  
      xmlns:h="http://java.sun.com/jsf/html"  
      xmlns:f="http://java.sun.com/jsf/facelets"  
      xmlns:p="http://primefaces.org/ui"  
      xmlns:c="http://java.sun.com/jsf/core">  
    <h:head>  
        <title> - SVP Sistema Venda de Passagens 0.1</title>  
        <link rel="stylesheet" href="../../css/bootstrap.css"></link>  
    </h:head>  
    <h:body>  
        <div id="bannerPag">  
            <f:insert name="bannerPag">  
                <f:include src="../banner/banner.xhtml" />  
            </f:insert>  
        </div>  
  
        <div class="container" style="padding-top: 80px;">  
            <div class="row" id="menuApp">  
                <f:insert>  
                    <f:include src="../menus/menuUserAdm.xhtml"/>  
                </f:insert>  
            </div>  
  
            <div id="cad">  
                <h:form styleClass="form-horizontal well" style="margin-left: -20px;" id="form">  
                    <fieldset>  
                        <legend>Consulta Lotação Rota</legend>  
  
                        <p:growl id="growl" showDetail="true" autoUpdate="true" life="10000" />  
  
                        <div class="control-group" style="padding-top: 40px;">  
                            <h:outputLabel value="Escolha a Rota" styleClass="control-label" />  
                            <div class="controls">  
                                <p:selectOneMenu value="#{consultaLotacaoController.idRotaAux}" style="width: 300px;" >  
                                      
                                    <c:selectItem itemLabel="Selecione a Rota..." itemValue="#{null}"/>  
                                    <c:selectItems value="#{consultaLotacaoController.listaRota}" var="r" itemLabel="#{r.dsRota}" itemValue="#{r.idRota}" />  
                                    <p:ajax event="change" process="@this" listener="#{consultaLotacaoController.searchRota}" update="panelDia"/>  
                                      
                                </p:selectOneMenu>  
                            </div>  
                        </div>  
  
                        <div class="control-group">  
                            <h:outputLabel value="Escolha o Dia" styleClass="control-label" />  
                            <div class="controls">  
                                <p:outputPanel id="panelDia" >  
                                    <p:selectOneMenu value="#{consultaLotacaoController.idDiaAux}" style="width: 300px;"   
                                                     disabled="#{consultaLotacaoController.idRotaAux == null}" >  
                                      
                                        <c:selectItem itemLabel="Selecione o Dia..." itemValue="#{null}" rendered="#{consultaLotacaoController.idRotaAux != null}"/>  
                                        <c:selectItems value="#{consultaLotacaoController.listaDiaDtoAux}" var="diaAux" itemValue="#{diaAux.idDia}"   
                                                       itemLabel="#{diaAux.label}" />  
  
                                        <p:ajax event="change" process="@this" listener="#{consultaLotacaoController.searchDia}" update="panelHorario"/>  
  
                                    </p:selectOneMenu>  
                                </p:outputPanel>  
                            </div>  
                        </div>  
  
                        <div class="control-group">  
                            <h:outputLabel value="Escolha o Horário" styleClass="control-label" />  
                            <div class="controls">  
                                <p:outputPanel id="panelHorario" >  
                                    <p:selectOneMenu value="#{consultaLotacaoController.horario.horario}" style="width: 300px;"  
                                                     disabled="#{consultaLotacaoController.idDiaAux == null}">  
  
                                        <c:selectItem itemLabel="Selecione o Horário..." itemValue="#{null}" rendered="#{consultaLotacaoController.idDiaAux != null}"/>  
                                        <c:selectItems value="#{consultaLotacaoController.dia.listaHorarios}" var="h" itemLabel="#{h.horaFormatado}"   
                                                       itemValue="#{h.horario}"/>  
  
                                    </p:selectOneMenu>  
                                </p:outputPanel>  
                            </div>  
                        </div>  
                          
                        <p:outputPanel id="panelVagas" rendered="#{consultaLotacaoController.numeroVagas != null}" autoUpdate="true">  
                            <div class="control-group">  
                                <h:outputLabel value="Número de vagas :" styleClass="control-label" />  
                                <div class="controls">  
                                    <h:outputLabel value="#{consultaLotacaoController.numeroVagas}" styleClass="control-label" />  
                                </div>  
                            </div>  
                        </p:outputPanel>  
  
                        <div class="form-actions">  
                            <p:commandButton value="Verficar Lotação" styleClass="btn btn-primary" actionListener="#{consultaLotacaoController.buscarVagas}"  
                                             update="panelVagas"/>  
                            <p:commandButton value="Limpar" styleClass="btn" style="margin-left: 10px;" actionListener="#{consultaLotacaoController.limpar}"  
                                             immediate="true" update=":form"/>  
                        </div>  
                    </fieldset>  
                </h:form>  
            </div>  
  
            <div id="foot">  
                <f:insert name="foot">  
                    <f:include src="../footer.xhtml"/>   
                </f:insert>  
            </div>  
        </div>  
    </h:body>  
</html>  

Quando clico no botãao “Verificar Lotação” aparece esse erro

Erro de conversão ao definir o valor '08:30:00' para 'null Converter'.  
Erro de conversão ao definir o valor '08:30:00' para 'null Converter'.  

O que faço para resolver ?

Pelo que vi, você não declarou o converter no xhtml. Lembre-se que deve colocar no faces-config também.

Ou, se for um Custom Converter no JSF 2, pode usar anotações.[code]@javax.faces.convert.FacesConverter(value = “meuConverter”)
public class MeuConverter implements javax.faces.convert.Converter{

}[/code]

Mas porque é necessario o converter, ele naum deveria pegar o valor da propriedade e setar aonde eu disse? Por que precisa do converter ?

Pesquisei um poco e implementei um converter meu codigo ficou assim

package com.estagio.converter;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

/**
 * @author Cristian Urbainski
 * @since 24/06/2012
 */
@FacesConverter(value="horaConverter")
public class HoraConverter implements Converter{

    @Override
    public Object getAsObject(FacesContext fc, UIComponent uic, String string) {
        String hor[] = string.split(":");
        
        Calendar c = Calendar.getInstance();
        c.set(Calendar.HOUR, Integer.parseInt(hor[0]));
        c.set(Calendar.MINUTE, Integer.parseInt(hor[1]));
        
        return c.getTime();
    }

    @Override
    public String getAsString(FacesContext fc, UIComponent uic, Object o) {
        return new SimpleDateFormat("HH:mm").format((Date) o);
    }
    
}

e o meu xhtml ficou assim


<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/facelets"
      xmlns:p="http://primefaces.org/ui"
      xmlns:c="http://java.sun.com/jsf/core">
    <h:head>
        <title> - SVP Sistema Venda de Passagens 0.1</title>
        <link rel="stylesheet" href="../../css/bootstrap.css"></link>
    </h:head>
    <h:body>
        <div id="bannerPag">
            <f:insert name="bannerPag">
                <f:include src="../banner/banner.xhtml" />
            </f:insert>
        </div>

        <div class="container" style="padding-top: 80px;">
            <div class="row" id="menuApp">
                <f:insert>
                    <f:include src="../menus/menuUserAdm.xhtml"/>
                </f:insert>
            </div>

            <div id="cad">
                <h:form styleClass="form-horizontal well" style="margin-left: -20px;" id="form">
                    <fieldset>
                        <legend>Consulta Lotação Rota</legend>

                        <p:growl id="growl" showDetail="true" autoUpdate="true" life="10000" />

                        <div class="control-group" style="padding-top: 40px;">
                            <h:outputLabel value="Escolha a Rota" styleClass="control-label" />
                            <div class="controls">
                                <p:selectOneMenu value="#{consultaLotacaoController.idRotaAux}" style="width: 300px;" >
                                    
                                    <c:selectItem itemLabel="Selecione a Rota..." itemValue="#{null}"/>
                                    <c:selectItems value="#{consultaLotacaoController.listaRota}" var="r" itemLabel="#{r.dsRota}" itemValue="#{r.idRota}" />
                                    <p:ajax event="change" process="@this" listener="#{consultaLotacaoController.searchRota}" update="panelDia"/>
                                    
                                </p:selectOneMenu>
                            </div>
                        </div>

                        <div class="control-group">
                            <h:outputLabel value="Escolha o Dia" styleClass="control-label" />
                            <div class="controls">
                                <p:outputPanel id="panelDia" >
                                    <p:selectOneMenu value="#{consultaLotacaoController.idDiaAux}" style="width: 300px;" 
                                                     disabled="#{consultaLotacaoController.idRotaAux == null}" >
                                    
                                        <c:selectItem itemLabel="Selecione o Dia..." itemValue="#{null}" rendered="#{consultaLotacaoController.idRotaAux != null}"/>
                                        <c:selectItems value="#{consultaLotacaoController.listaDiaDtoAux}" var="diaAux" itemValue="#{diaAux.idDia}" 
                                                       itemLabel="#{diaAux.label}" />

                                        <p:ajax event="change" process="@this" listener="#{consultaLotacaoController.searchDia}" update="panelHorario"/>

                                    </p:selectOneMenu>
                                </p:outputPanel>
                            </div>
                        </div>

                        <div class="control-group">
                            <h:outputLabel value="Escolha o Horário" styleClass="control-label" />
                            <div class="controls">
                                <p:outputPanel id="panelHorario" >
                                    <p:selectOneMenu value="#{consultaLotacaoController.horario.horario}" style="width: 300px;"
                                                     disabled="#{consultaLotacaoController.idDiaAux == null}" converter="horaConverter">

                                        <c:selectItem itemLabel="Selecione o Horário..." itemValue="#{null}" rendered="#{consultaLotacaoController.idDiaAux != null}"/>
                                        <c:selectItems value="#{consultaLotacaoController.dia.listaHorarios}" var="h" itemLabel="#{h.horaFormatado}"
                                                       itemValue="#{h.horario}"/>
                                        
                                    </p:selectOneMenu>
                                </p:outputPanel>
                            </div>
                        </div>
                        
                        <p:outputPanel id="panelVagas" rendered="#{consultaLotacaoController.numeroVagas != null}" autoUpdate="true">
                            <div class="control-group">
                                <h:outputLabel value="Número de vagas :" styleClass="control-label" />
                                <div class="controls">
                                    <h:outputLabel value="#{consultaLotacaoController.numeroVagas}" styleClass="control-label" />
                                </div>
                            </div>
                        </p:outputPanel>

                        <div class="form-actions">
                            <p:commandButton value="Verficar Lotação" styleClass="btn btn-primary" actionListener="#{consultaLotacaoController.buscarVagas}"
                                             update="panelVagas"/>
                            <p:commandButton value="Limpar" styleClass="btn" style="margin-left: 10px;" actionListener="#{consultaLotacaoController.limpar}"
                                             immediate="true" update=":form"/>
                        </div>
                    </fieldset>
                </h:form>
            </div>

            <div id="foot">
                <f:insert name="foot">
                    <f:include src="../footer.xhtml"/> 
                </f:insert>
            </div>
        </div>
    </h:body>
</html>

Mas deu um erro quando cliquei no botão “verificar lotação”

form:j_idt85: Erro de validação: o valor não é válido
form:j_idt85: Erro de validação: o valor não é válido

Alguem ja viu esse erro ? Obrigado