Peço desculpas caso a dúvida seja muito básica, pois estou começando a estudar esse assunto agora.
Estou construindo um programa para anuncios de veículos para aprender.
Criei um combobox, a partir de uma tabela no banco de dados mysql.
private HashMap<Integer, MarcasVeiculos> marcasVeiculos = new HashMap<Integer, MarcasVeiculos>();
private List<SelectItem> marcasItems = new LinkedList<SelectItem>();
private SelectItem selectedMarca;
public void CarregarListaMarcasVeiculos() {
AcessoMySQL acesso = new AcessoMySQL();
Connection conexao = acesso.geraConexao();
Statement consulta = null;
ResultSet resultado = null;
MarcasVeiculos marca = null;
String sql = "Select id, descricao ";
sql += " from marcas_veiculos ";
sql += " order by descricao";
System.out.println(sql);
try {
consulta = conexao.createStatement();
resultado = consulta.executeQuery(sql);
if (marcasItems.size() != 0) {
marcasItems.clear();
}
// insere mais conhecidos na frente da lista
marca = new MarcasVeiculos();
marca.setId(163);
marca.setDescricao("VOLKSWAGEN");
marca.setTipo("C");
marcasItems.add(new SelectItem(marca, marca.getDescricao()));
marcasVeiculos.put(marca.getId(), marca);
System.out.println(marcasVeiculos.get(marca.getId()));
System.out.println(marcasVeiculos.get(marca.getDescricao()));
while (resultado.next()) {
marca = new MarcasVeiculos();
marca.setId(resultado.getInt("id"));
marca.setDescricao(resultado.getString("descricao"));
marca.setTipo("C");
marcasItems.add(new SelectItem(marca, marca.getDescricao()));
marcasVeiculos.put(marca.getId(), marca);
}
System.out.println(marcasItems.size());
} catch(SQLException e) {
System.out.println("Erro ao buscar Anuncio " + e.getMessage());
} finally {
try {
consulta.close();
resultado.close();
conexao.close();
} catch (Throwable e) {
System.out.println("Erro ao fechar as operações de consulta " + e.getMessage());
}
}
}
No código abaixo apresento a lista de carros. As 2 últimas linhas mostram na tela o resultado da marca escolhida.
O Javax funciona bem.
<h:outputLabel value="Marca: " for="selectedMarca" />
<h:selectOneMenu id="selectedMarca" value="#{anuncioBean.selectedMarca}" converter="marcaConverter">
<f:selectItems value="#{anuncioBean.marcasItems}" var="o" itemLabel="#{o.descricao}" itemValue="#{o}" />
<f:ajax event="change" listener="#{anuncioBean.Carregar}" render="selecionado" execute="@this"/>
</h:selectOneMenu>
<h:outputLabel value="Selecionado: " />
<h:outputText id="selecionado" value="#{anuncioBean.selectedMarca}"/>
O problema é que quando tento trabalhar com as informações da marca selecionada não consigo fazer nada com o objeto retornado.
o resultado é esse:
javax.faces.model.SelectItem@533e846f
Como devo fazer para ter acesso a informação ID que foi carregada na lista?
Quero pegar o id para carregar uma lista de modelos de veículos a partir da marca selecionada.
Essa lista seria carregada no AjaxBehavior, mas não consigo pegar o id da marca selecionada.