Opa, galera!!!
Eu tow com uma duvida no combo, eu tou querendo pega os valores do banco e jogar no combobox só que dá um erro
<rich:comboBox id="combomostra" >
<f:selectItems value="#{pegandoBd.mostranome}" />
</rich:comboBox>
E dá esse erro.
An Error Occurred:
Exception while calling encodeEnd on component : {Component-Path : [Class: org.ajax4jsf.component.AjaxViewRoot,ViewId: /inserindocombo.jsp][Class: org.richfaces.component.html.HtmlComboBox,Id: combomostra]}
Caused by:
java.lang.IllegalArgumentException - Value 'javax.servlet.jsp.jstl.sql.ResultImpl' of tag <selectItems> attribute is incorrect.
O que retorna o seu método mostranome? Alias o método tem que ser getMostranome…
ele ta getmostra nome e retorna a result
public Result getMostranome() throws SQLException{
PreparedStatement st;
ResultSet rs = null;
Connection conn = Ascessando.getConnection();
try{
st = conn.prepareStatement(" SELECT nome FROM cadastro");
rs = st.executeQuery();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
return ResultSupport.toResult(rs);
}
ta assim no bean
Bom, realmente eu não sei se da pra fazer dessa forma, eu faço com o método retornando um List de javax.faces.model.SelectItem
vc ja usou com o
while (result.next()){
Nome = result.getString(" Nome");
.....
}
Não, eu já usei assim:
List<SelectItem>lista = new ArrayList<SelectItem>();
//aqui vem os valores do banco
lista.add(new SelectItem("1", "valor1") );
lista.add(new SelectItem("2", "valor2") );
return lista
eu fiz assim só que não mostra o valor que ta no banco
public List<SelectItem> getList() throws SQLException{
PreparedStatement st;
Connection Conn = Ascessando.getConnection();
List<SelectItem> opcao = new ArrayList<SelectItem>();
try{
st = Conn.prepareStatement("SELECT nome FROM teste");
st.execute();
opcao.add(new SelectItem("1","?"));
opcao.add(new SelectItem("2","?"));
System.out.println("Selecionado com Sucesso");
st.close();
Conn.close();
}catch (Exception e) {
e.printStackTrace();
}
return opcao;
}
Não é bem assim.
você deve fazer um
e depois varrer o resultado
while (rs.next()){
opcao.add(new SelectItem("1", rs.getString("nome") ) );
}
o código “1” também deveria vir de uma coluna do banco. Faz da mesma forma que o nome.