Estou com um problema de validacao em um combo box do primafaces vou postar o codigo
<p:outputPanel id="panelHorario" >
<p:selectOneMenu value="#{consultaLotacaoController.horario.horarioViagem}" 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.horarioViagem}"/>
</p:selectOneMenu>
</p:outputPanel>
meu controller
package com.estagio.controller;
import com.estagio.business.RotaBO;
import com.estagio.dto.DiaDTO;
import com.estagio.dto.DtoDiaAux;
import com.estagio.dto.DtoHorarioViagem;
import com.estagio.dto.RotaDTO;
import java.io.Serializable;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.context.FacesContext;
/**
* @author Cristian Urbainski
* @since 16/06/2012
*/
@ManagedBean
@ViewScoped
public class ConsultaLotacaoController implements Serializable {
private List<RotaDTO> listaRota;
private List<DtoDiaAux> listaDiaDtoAux;
private DiaDTO dia;
private RotaDTO rota;
private Integer idRotaAux;
private Integer idDiaAux;
private DtoHorarioViagem horario;
private Integer numeroVagas;
private Time time;
public ConsultaLotacaoController()
{
horario = new DtoHorarioViagem(null, null);
}
public void limpar()
{
idRotaAux = null;
idDiaAux = null;
horario.setHorarioViagem(null);
}
public void buscarVagas()
{
try {
Calendar data = Calendar.getInstance();
data.set(Calendar.HOUR, horario.getHorarioViagem().getHours());
data.set(Calendar.MINUTE, horario.getHorarioViagem().getMinutes());
System.out.println(new SimpleDateFormat("dd/MM/yyyy HH:mm").format(data.getTime()));
Integer quantidade = new RotaBO().buscarVagasLotacao(idDiaAux, data.getTime());
numeroVagas = rota.getTipoVeiculo().getQtLuar() - quantidade;
} catch (Exception e) {
e.printStackTrace();
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro", e.getMessage()));
}
}
public void searchDia()
{
System.out.println("chegou search dia");
if(idDiaAux.equals(new Integer("1")))
{
dia = rota.getDomingo();
}
else if(idDiaAux.equals(new Integer("2")))
{
dia = rota.getSegunda();
}
else if(idDiaAux.equals(new Integer("3")))
{
dia = rota.getTerca();
}
else if(idDiaAux.equals(new Integer("4")))
{
dia = rota.getQuarta();
}
else if(idDiaAux.equals(new Integer("5")))
{
dia = rota.getQuinta();
}
else if(idDiaAux.equals(new Integer("6")))
{
dia = rota.getSexta();
}
else if(idDiaAux.equals(new Integer("7")))
{
dia = rota.getSabado();
}
horario = new DtoHorarioViagem(null, null);
}
public void searchRota()
{
for (RotaDTO rotaDTO : listaRota) {
if(rotaDTO.getIdRota().equals(idRotaAux))
{
rota = rotaDTO;
break;
}
idDiaAux = null;
horario.setHorarioViagem(null);
}
listaDiaDtoAux = new ArrayList<DtoDiaAux>();
if(rota.getDomingo().getTemRotaNesseDia())
{
listaDiaDtoAux.add(new DtoDiaAux(new Integer("1"), "Domingo", rota.getDomingo()));
}
if(rota.getSegunda().getTemRotaNesseDia())
{
listaDiaDtoAux.add(new DtoDiaAux(new Integer("2"), "Segunda-Feira", rota.getSegunda()));
}
if(rota.getTerca().getTemRotaNesseDia())
{
listaDiaDtoAux.add(new DtoDiaAux(new Integer("3"), "Terça-Feira", rota.getTerca()));
}
if(rota.getQuarta().getTemRotaNesseDia())
{
listaDiaDtoAux.add(new DtoDiaAux(new Integer("4"), "Quarta-Feira", rota.getDomingo()));
}
if(rota.getQuinta().getTemRotaNesseDia())
{
listaDiaDtoAux.add(new DtoDiaAux(new Integer("5"), "Quinta-Feira", rota.getDomingo()));
}
if(rota.getSexta().getTemRotaNesseDia())
{
listaDiaDtoAux.add(new DtoDiaAux(new Integer("6"), "Sexta-Feira", rota.getDomingo()));
}
if(rota.getSabado().getTemRotaNesseDia())
{
listaDiaDtoAux.add(new DtoDiaAux(new Integer("7"), "Sabado", rota.getDomingo()));
}
}
public Integer getIdRotaAux() {
return idRotaAux;
}
public void setIdRotaAux(Integer idRotaAux) {
this.idRotaAux = idRotaAux;
}
public List<RotaDTO> getListaRota() {
try {
listaRota = new RotaBO().buscarTodasRotas();
} catch (Exception e) {
e.printStackTrace();
}
return listaRota;
}
public void setListaRota(List<RotaDTO> listaRota) {
this.listaRota = listaRota;
}
public RotaDTO getRota() {
return rota;
}
public void setRota(RotaDTO rota) {
this.rota = rota;
}
public DiaDTO getDia() {
return dia;
}
public void setDia(DiaDTO dia) {
this.dia = dia;
}
public DtoHorarioViagem getHorario() {
return horario;
}
public void setHorario(DtoHorarioViagem horario) {
this.horario = horario;
}
public Integer getIdDiaAux() {
return idDiaAux;
}
public void setIdDiaAux(Integer idDiaAux) {
this.idDiaAux = idDiaAux;
}
public List<DtoDiaAux> getListaDiaDtoAux() {
return listaDiaDtoAux;
}
public void setListaDiaDtoAux(List<DtoDiaAux> listaDiaDtoAux) {
this.listaDiaDtoAux = listaDiaDtoAux;
}
public Integer getNumeroVagas() {
return numeroVagas;
}
public void setNumeroVagas(Integer numeroVagas) {
this.numeroVagas = numeroVagas;
}
public Time getTime() {
return time;
}
public void setTime(Time time) {
this.time = time;
}
}
meu converter
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]));
System.out.println(new SimpleDateFormat("HH:mm").format(c.getTime()));
return c.getTime();
}
@Override
public String getAsString(FacesContext fc, UIComponent uic, Object o) {
return new SimpleDateFormat("HH:mm").format((Date) o);
}
}
[/code
quando clico no botao Verificar Lotação ele me da o seguinte erro de validação
[code]
form:j_idt85: Erro de validação: o valor não é válido
pesquisei na net e achei um cara que fala que o metodo equals do objeto em questao deveria ser modificado em fiz isso mas continua sem funcionar aqui vai a classe
package com.estagio.dto;
import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.Date;
/**
* @author Cristian Urbainski
* @since 17/05/2012
*/
public class DtoHorarioViagem implements Serializable{
private String label;
private Date horarioViagem;
public DtoHorarioViagem(String label, Date horario) {
this.label = label;
this.horarioViagem = horario;
}
public Date getHorarioViagem() {
return horarioViagem;
}
public void setHorarioViagem(Date horario) {
this.horarioViagem = horario;
}
public String getLabel() {
return label;
}
public void setLabel(String label) {
this.label = label;
}
public String getHoraFormatado()
{
return new SimpleDateFormat("HH:mm").format(this.horarioViagem);
}
@Override
public boolean equals(Object obj) {
DtoHorarioViagem dtoAux = (DtoHorarioViagem) obj;
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
String data1 = sdf.format(horarioViagem);
String data2 = sdf.format(dtoAux.getHorarioViagem());
return data1.equals(data2);
}
}
se alguem poder me ajudar fico muito agradecido
ate mais obrigado desde ja pela ajuda.