Oi pessoal,
estou tendo problemas para preencher uma combobox no JSF. A página 
aparece toda certinha. O problema é q dá "Validation Error: Value is not 
valid" qdo mando enviar a página. Estou há vários dias quebrando a 
cabeça e procurando na net, mas não encontro uma solução para o 
problema. Vou enviar o código para quem puder me ajudar.

Mapeamentos no faces-config.xml:
<managed-bean>
    <managed-bean-name>pc_CadastroAluno</managed-bean-name>
    <managed-bean-class>pagecode.admin.aluno.Cadastro</managed-bean-class>
    <managed-bean-scope>request</managed-bean-scope>
</managed-bean>
<converter>
    <converter-id>serieConverter</converter-id>
    <converter-class>pagecode.converter.SerieConverter</converter-class>
</converter>

Código na página:
<h:selectOneMenu styleClass="selectOneMenu" id="cmbSerie" 
value="#{pc_CadastroAluno.serie}" converter="serieConverter">
    <f:selectItems value="#{pc_CadastroAluno.series}" />
</h:selectOneMenu>
<h:message for="cmbSerie" />

pagecode.admin.aluno.Cadastro.java:
public class Cadastro extends PageCodeBase implements Formulario
{
  private SerieVO serieVO;

  public SerieVO getSerie()
  {
    return serieVO;
  }

  /**
   * Seta a série a ser exibida na combobox.
   * @param serie
   */
  public void setSerie(SerieVO serie)
  {
    this.serieVO = serie;
  }

  /**
   * Retorna uma Collection de SelectItem contendo todas as séries a 
serem exibidas na combobox.
   * @return
   */
  public Collection getSeries()
  {
    Collection items = new ArrayList();
    Map series = (Map) getSessionScope().get("series");

    if (series == null)
    {
      DAOFactory fac = DAOFactory.getDAOFactory(DAOFactory.HIBERNATE);
      try
      {
        series = fac.getSerieDAO().getSeries();
        getSessionScope().put("series", series);
      }
      catch (Exception e)
      {
        e.printStackTrace();
        throw new FacesException(e);
      }
    }

    Iterator it = series.values().iterator();
    while (it.hasNext())
    {
      SerieVO s = (SerieVO) it.next();
      SelectItem si = new SelectItem(s.getCodigo(), s.getNome());
      items.add(si);
    }

    return items;
  }

  public String envia()
  {
    return SUCESSO;
  }
}

public class SerieConverter implements Converter
{
  public String getAsString(FacesContext fc, UIComponent ui, Object obj)
  {
    Integer i = (Integer) obj;
    return String.valueOf(i.intValue());
  }

  public Object getAsObject(FacesContext fc, UIComponent ui, String valor)
  {
    SerieVO serie = null;

    Map session = fc.getExternalContext().getSessionMap();

    Map series = (Map) session.get("series");
    if (series != null)
      return (SerieVO) series.get(new Integer(valor));
    else
      return getSerie(new Integer(valor));
  }

  private SerieVO getSerie(Integer codigo)
  {
    DAOFactory fac = DAOFactory.getDAOFactory(DAOFactory.HIBERNATE);

    try
    {
      return fac.getSerieDAO().getSerie(codigo);
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }
}

SerieVO.java
public class SerieVO implements Serializable
{
  private Integer codigo;
  private String nome;
  private Map alunos = null;

  public SerieVO()
  {
    this.alunos = new TreeMap();
  }

  public Integer getCodigo()
  {
    return codigo;
  }

  public void setCodigo(Integer codigo)
  {
    this.codigo = codigo;
  }

  public String getNome()
  {
    return nome;
  }

  public void setNome(String nome)
  {
    this.nome = nome;
  }

  public Map getAlunos()
  {
    return alunos;
  }

  public void setAlunos(Map alunos)
  {
    this.alunos = alunos;
  }

  public void setAluno(AlunoVO aluno)
  {
    this.alunos.put(aluno.getCodigo(), aluno);
  }

   public boolean equals(Object obj)
  {
    if (obj == this)
      return true;

    if (!(obj instanceof SerieVO))
      return false;

    SerieVO sVO = (SerieVO) obj;

    if (sVO.getCodigo() == null || sVO.getNome() == null)
      return false;

    return this.getCodigo().equals(sVO.codigo)
      && this.getNome().equals(sVO.getNome());
  }

  public int hashCode()
  {
    return codigo.hashCode();
  }
}

        
        
                
_______________________________________________________ 
Yahoo! Acesso Grátis - Internet rápida e grátis. 
Instale o discador agora! http://br.acesso.yahoo.com/


 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/jug-petropolis/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Atrašyti