Preciso de ajuda em um combobox que estou implementando, porém ele não mostra o valor correto do banco de dados.
Este é o código que busca o nome dos usuarios cadastrados.
public ArrayList<novo> getlista() {
ArrayList<novo> lista = new ArrayList<novo>();
try {
mb_conexao_mysql conexao = new mb_conexao_mysql("db_gip_"+session.getAttribute("v_uf_user"));
Connection connection = conexao.connect();
Statement statement1 = null;
ResultSet rs1 = null;
statement1 = connection.createStatement();
rs1 = statement1.executeQuery ("SELECT nome FROM tab_cadastro ORDER BY nome ASC");
while (rs1.next()) {
this.Nome = rs1.getString("nome");
novo c = new novo(Nome);
lista.add(c);
}
rs1.close();
connection.close();
conexao.close();
} catch (SQLException ex) {
// talvez um log aqui
}
return lista;
}
Ele deveria pegar o nome do usuario para mostrar no combo. Para testar se ele estava carregando os nomes eu tinha criado uma variavel temp e coloquei na sessão o resultado da query e estava certo.
O problema é o tipo de objeto que tu está retornando para o combobox.
Dever ser uma lista de SelectItens. Lá você pode adicionar o label e o value dele, tirando esse erro.
Faltou postar o seu Bean, já que é JSF.
E poste na área de JEE na próxima.
Cara me desculpe se eu escrever algumas besteira (pois não manjo nada de jee ainda, rsrs), mas usando a lógica da estrutura de classes, você mostrou estar exibindo no combo o endereço/referência da memória para cada objeto correto?
pac_eu.novo@1a282ff
pac_eu.novo@12e96a0
Pois na sua classe basta sobreescrever o método toString() e dentro dele retornar o nome do objeto em questão:
@Override
public String toString() {
return "Nome do objeto aqui...";
}
Pelo menos assim que uso para desktop e funfa beleza.
Mais uma vez desculpas pelas besteiras escritas e espero ter ajudado.
Realmente conforme nosso amigo mencionou, sobrescrever o método toString vai mudar a forma de apresentação, no entanto eu optaria em trabalhar com o SelectItem.