Preencher um selectOneMenu com dados de uma tabela

2 respostas
R

Olá Pessoal,

Estou tentato preencher um selectOneMenu, com dados de uma tabela. Meu JSP está da seguinte maneira:

<h:selectOneMenu value="#{objUsuario.perCodigo}">
         <f:selectItems value="#{objUsuario.opcoesPerfil}"/>
      </h:selectOneMenu>

E o metodo opcoesPerfil está da seguinte forma:

public SelectItem[] getOpcoesPerfil()
{
    BOperfil objPerfil = new BOperfil();
    ResultSet rsPerfil;
    SelectItem[] opPerfil=null;    
    
    int i=0;
    try{
        rsPerfil = objPerfil.conPerfil();            
        while(rsPerfil.next()){
            opPerfil[i].setLabel(rsPerfil.getString("PerNome"));
            i++;
        }                        
        return opPerfil;                             
    }
    catch(Exception ex){
        return opPerfil = null;            
    }        
    
}

E me aparece o seguinte erro:

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: javax.servlet.jsp.JspException: Conversion Error setting value ‘’{0}’’ for ‘’{1}’’.

Porém não entendi o que está errado? Alguém já tentou fazer isto?

Obrigado

2 Respostas

R

Pessoa,

Consegui resolver o problema comentado acima, fiz o seguinte código, criei um metodo que retorna uma collection veja:

public Collection getOpcoesPerfil()
{
    BOperfil objPerfil = new BOperfil();
    ResultSet rsPerfil;
    ArrayList opPerfil = new ArrayList();            
    int i=0;
    try{
        rsPerfil = objPerfil.conPerfil();            
        while(rsPerfil.next()){
            opPerfil.add(new SelectItem(rsPerfil.getObject("PerCodigo"),rsPerfil.getString("PerNome")));
            i++;
        }                        
        return opPerfil;                             
    }
    catch(Exception ex){
        return opPerfil = null;            
    }               
}

e na minha página o meu selectOneMenu ficou assim:

<h:selectOneMenu id=“cboperPerfil” value="#{objUsuario.perCodigo}">
<f:selectItems value="#{objUsuario.opcoesPerfil}"/>
</h:selectOneMenu>

Porém agora estou com outro problema, quando este elemento selectOneMenu está na minha página e eu clico no botão salavar a ação não funciona, porém quando removo este elemento ele funciona corretamente, ~e quando não acontece nada não me da nenhuma mensagem de erro alguem sabe o que pode ser???

R

Pessoal,

Descobri o problema, na linha opPerfil.add(new SelectItem(rsPerfil.getObject(“PerCodigo”),rsPerfil.getString(“PerNome”))); ela tem que ser assim:

opPerfil.add(new SelectItem(rsPerfil.getString(“PerCodigo”),rsPerfil.getString(“PerNome”)));

O value do SelectItem tem que ser uma String, porém como na minha tabela esses números são inteiros então tive que converter. Agora não sei se é isto mesmo ou se não utilizei corretamente, porém agora a tela está funcionando corretamente.

Se alguém souber me fale.

Criado 7 de setembro de 2007
Ultima resposta 8 de set. de 2007
Respostas 2
Participantes 1